Udostępnij za pośrednictwem


Opcje planowania wykonywania akcji niestandardowych

Ponieważ akcja niestandardowa może być zaplanowana zarówno w interfejsie użytkownika, jak i w tabelach sekwencji wykonywania, i może być wykonywana w procesie usługi lub klienta, akcja niestandardowa może być potencjalnie wykonywana wiele razy.

Należy pamiętać, że instalator:

  • Domyślnie natychmiast wykonuje akcje w sekwencyjnej tabeli.
  • Nie wykonuje akcji, jeśli pole wyrażenia warunkowego tabeli sekwencji zwróci wartość False.
  • Przetwarza tabelę sekwencji interfejsu użytkownika w procesie klienta, jeśli poziom interfejsu użytkownika wewnętrznego jest ustawiony na pełny tryb interfejsu użytkownika (zobacz MsiSetInternalUI opis poziomów interfejsu użytkownika).
  • Jest usługą zarejestrowaną domyślnie w przypadku korzystania z systemu Windows 2000, a w tym przypadku tabela sekwencji wykonywania jest przetwarzana w usłudze instalatora.

Możesz użyć następujących flag opcji, aby zarządzać wieloma natychmiastowymi wykonaniami akcji niestandardowych. Aby ustawić opcję, dodaj wartość w tej tabeli do wartości w polu Typ w tabeli CustomAction. Żadna z poniższych flag nie powinna być używana z akcjami niestandardowymi z odroczonym wykonaniem .

(ustawienie domyślne)

Szesnastkowy: 0x00000000

Liczba dziesiętna: 0

Zawsze wykonaj polecenie . Akcja może być uruchomiona dwa razy, jeśli istnieje w obu tabelach sekwencji.

msidbCustomActionTypeFirstSequence

Szesnastkowy: 0x00000100

Liczba dziesiętna: 256

Wykonaj nie więcej niż raz, jeśli występuje w obu tabelach sekwencji. Zawsze pomija akcję w sekwencji wykonywania, jeśli sekwencja interfejsu użytkownika została uruchomiona. Brak efektu w sekwencji interfejsu użytkownika. Akcja nie musi być obecna ani uruchamiana w sekwencji interfejsu użytkownika, aby zostać pominięta w sekwencji wykonywania. Nie wpływa to na rejestrację usługi instalacyjnej.

msidbCustomActionTypeOncePerProcess

Szesnastkowy: 0x00000200

Liczba dziesiętna: 512

Wykonaj raz na proces, jeśli w obu tabelach sekwencji. Pomija akcję w sekwencji wykonywania skryptu, jeśli sekwencja interfejsu użytkownika została uruchomiona w tym samym procesie, na przykład gdy obie sekwencje są uruchomione w procesie klienta. Służy do zapobiegania dwukrotnemu uruchamianiu akcji modyfikujących stan sesji, takich jak właściwość i dane bazy danych.

msidbCustomActionTypeClientRepeat

Szesnastkowy: 0x00000300

Liczba dziesiętna: 768

Wykonaj polecenie tylko wtedy, gdy jest uruchomiona na kliencie po uruchomieniu sekwencji interfejsu użytkownika. Akcja jest uruchamiana tylko wtedy, gdy sekwencja wykonywania jest uruchamiana na kliencie po zakończeniu sekwencji interfejsu użytkownika. Może służyć do dostarczania/lub logiki lub pomijania przetwarzania związanego z interfejsem użytkownika, jeśli zostało to już zrobione dla sesji klienta.

Należy pamiętać, że aby uruchomić akcję niestandardową w dwóch różnych trybach uruchamiania, utwórz dwa wpisy w tabeli CustomAction . Aby na przykład mieć akcję niestandardową, która wywołuje bibliotekę linków dynamicznych C/C++ (DLL) (niestandardowy typ akcji 1) zarówno wtedy, gdy tryb jest MSIRUNMODE_SCHEDULED, jak i MSIRUNMODE_ROLLBACK, umieść dwa wpisy w tabeli CustomAction, które nazywają tę samą bibliotekę DLL, ale mają różne typy liczbowe. Dołącz kod wywołujący MsiGetMode, aby określić, kiedy należy uruchomić akcję niestandardową.

Odniesienie do akcji niestandardowej

Informacje o akcjach niestandardowych

przy użyciu akcji niestandardowych