Vlastní možnosti plánování provádění akcí
Vzhledem k tomu, že vlastní akci lze naplánovat v uživatelském rozhraní i v sekvenčních tabulkách a je možné ji spustit buď ve službě, nebo v procesu klienta, může se vlastní akce spustit několikrát.
Všimněte si, že instalační program:
- Ve výchozím nastavení provede akce v sekvenční tabulce.
- Neprovede akci, pokud se pole podmíněného výrazu v sekvenční tabulce vyhodnotí jako Nepravda.
- Zpracovává tabulku sekvence uživatelského rozhraní v procesu klienta, pokud je úroveň rozhraní interního uživatele nastavena na úplný režim uživatelského rozhraní (viz MsiSetInternalUI popis úrovní uživatelského rozhraní).
- Je služba ve výchozím nastavení zaregistrovaná při použití systému Windows 2000 a v tomto případě se v instalační službě zpracuje tabulka pořadí spuštění.
Můžete použít následující přepínače k ovládání více okamžitých provedení vlastních akcí. Pokud chcete nastavit možnost, přidejte hodnotu v této tabulce k hodnotě v poli Typ tabulky CustomAction. Žádný z následujících příznaků by neměl být použit s odloženým prováděním vlastních akcí .
-
(výchozí)
-
Hexadecimální: 0x00000000
Desetinné číslo: 0
Vždy provádějte. Akce se může spustit dvakrát, pokud jsou přítomné v obou sekvenčních tabulkách.
-
msidbCustomActionTypeFirstSequence
-
Hexadecimální: 0x00000100
Desetinné číslo: 256
Pokud jsou v obou sekvenčních tabulkách přítomny, spusťte maximálně jednou. Pokud se sekvence uživatelského rozhraní spustila, vždy přeskočí akci v pořadí spuštění. V sekvenci uživatelského rozhraní není žádný efekt. Akce nemusí být přítomná nebo spuštěná v sekvenci uživatelského rozhraní, aby se v pořadí spuštění přeskočila. Registrace instalační služby není ovlivněna.
-
msidbCustomActionTypeOncePerProcess
-
Hexadecimální: 0x00000200
Desetinné číslo: 512
Proveďte jednou na proces, pokud jsou v obou sekvencích tabulek. Přeskočí akci v pořadí spuštění, pokud se sekvence uživatelského rozhraní spustila ve stejném procesu, například obě se spustí v procesu klienta. Slouží k zabránění tomu, aby akce, které upravují stav relace, jako jsou vlastnosti a data databáze, běžely dvakrát.
-
msidbCustomActionTypeClientRepeat
-
Šestnáctkové: 0x00000300
Desetinné číslo: 768
Spusťte pouze v případě, že běží na klientovi po spuštění sekvence uživatelského rozhraní. Akce se spustí pouze tehdy, pokud je sekvence provádění spuštěna na klientovi po sekvenci uživatelského rozhraní. Může se použít k poskytnutí buď/anebo logiky, nebo k potlačení zpracování souvisejícího s uživatelským rozhraním, pokud už bylo dokončeno pro relaci klienta.
Všimněte si, že pokud chcete spustit vlastní akci během dvou různých režimů spuštění, vytvořte dvě položky do tabulky CustomAction . Chcete-li mít například vlastní akci, která volá knihovnu dynamického propojení C/C++ (DLL) (typ vlastní akce 1) jak v případě, že je režim MSIRUNMODE_SCHEDULED, tak MSIRUNMODE_ROLLBACK, vložte do tabulky CustomAction dvě položky, které volají stejnou knihovnu DLL, ale mají různé číselné typy. Zahrňte kód, který volá MsiGetMode, aby se určilo, kdy má být spuštěna která vlastní akce.
Související témata