Sekwencjonowanie akcji niestandardowych
Akcje niestandardowe są zaplanowane w tabelach sekwencji w taki sam sposób jak akcje standardowe.
Aby zaplanować akcję niestandardową w tabeli sekwencji
- Wprowadź niestandardową nazwę działania (która jest kluczem podstawowym tabeli CustomAction) do kolumny Działanie tabeli Sequence.
- Wprowadź sekwencję akcji niestandardowej względem innych akcji w sekcji Sekwencja tabeli Sequence. Aby uzyskać więcej informacji na temat tabel sekwencji, zobacz Using a Sequence Table.
- Aby warunkowo pominąć akcję, wprowadź wyrażenie warunkowe w kolumnie Warunek tabeli Sequence. Instalator pomija tę czynność, jeśli wyrażenie zwróci wartość FALSE.
Podobnie jak w przypadku standardowych akcji, niestandardowe akcje zaplanowane w InstallUISequence lub AdminUISequence są uruchamiane tylko wtedy, gdy wewnętrzny interfejs użytkownika jest ustawiony na pełny poziom. Poziom interfejsu użytkownika jest ustawiany przy użyciu funkcji MsiSetInternalUI.
Akcje standardowe i niestandardowe zaplanowane w tabelach InstallExecuteSequence, AdminExecuteSequencelub AdvtExecuteSequence nie powodują zmian systemowych. Zamiast tego instalator kolejkuje polecenia do wykonania w skrypcie do późniejszego wykonania podczas usługi instalacji. Jeśli nie ma usługi instalacji, akcje zaplanowane w tych tabelach są uruchamiane w tym samym kontekście co sekwencja interfejsu użytkownika.
Jeśli serwer instalatora nie jest zarejestrowany, akcje niestandardowe są wykonywane po stronie klienta. Jeśli serwer jest zarejestrowany i używa pełnego trybu interfejsu użytkownika, akcje niestandardowe są uruchamiane po stronie serwera.
W przypadku korzystania z pełnego interfejsu użytkownika z serwerem, początkowe akcje wykonywane przed akcją InstallValidate są uruchamiane na kliencie, aby umożliwić pełną interakcyjność. Wykonanie jest następnie przekazywane na serwer, który powtarza te same operacje i uruchamia akcje wykonywania skryptu. Następuje powrót do klienta dla ostatecznych akcji.
Należy pamiętać, że jeśli produkt zostanie usunięty, ustawiając jego górną funkcję na nieobecną, właściwość REMOVE może nie być równa ALL do momentu akcji InstallValidate. Oznacza to, że każda akcja niestandardowa zależna od REMOVE=ALL musi być sekwencjonowana po akcji InstallValidate. Akcja niestandardowa może sprawdzić status USUŃ, aby określić, czy produkt został ustawiony do całkowitego odinstalowania.
Akcje niestandardowe odwołujące się do zainstalowanego pliku jako źródła, takie jak niestandardowy typ akcji 17 (DLL), niestandardowy typ akcji 18 (EXE), niestandardowy typ akcji 21 (JScript) i niestandardowy typ akcji 22 (VBScript) muszą być zgodne z następującymi ograniczeniami sekwencjonowania.
- Akcja niestandardowa musi być sekwencjonowana po akcji CostFinalize, aby można było ustalić ścieżkę do wskazanego pliku.
- Jeśli plik źródłowy nie został jeszcze zainstalowany na komputerze, odroczone akcje niestandardowe (w skrypcie) muszą być zaplanowane po InstallFiles.
- Jeśli plik źródłowy nie jest jeszcze zainstalowany na komputerze, niezdeferowane akcje niestandardowe muszą być sekwencjonowane po akcji InstallInitialize.
Następujące ograniczenia sekwencjonowania dotyczą akcji niestandardowych, które zmieniają lub aktualizują pakiet Instalatora Windows.
- Jeśli akcja niestandardowa zmieni pakiet, na przykład przez dodanie wierszy do tabeli, akcja musi zostać sekwencjonowana przed akcją InstallInitialize.
- Jeśli akcja niestandardowa wprowadza zmiany, które miałyby wpływ na koszt, powinna zostać umieszczona w kolejności przed akcją CostInitialize.
- Jeśli akcja niestandardowa zmieni stan instalacji funkcji lub składników, należy ją sekwencjonować przed akcją InstallValidate.