Opzioni di pianificazione dell'esecuzione di azioni personalizzate
Poiché un'azione personalizzata può essere pianificata sia nell'interfaccia utente che nelle tabelle della sequenza di esecuzione e può essere eseguita nel processo del servizio o del client, un'azione personalizzata può potenzialmente essere eseguita più volte.
Si noti che il programma di installazione:
- Esegue azioni in una tabella di sequenza immediatamente per impostazione predefinita.
- Non esegue un'azione se il campo dell'espressione condizionale della tabella di sequenza restituisce False.
- Elabora la tabella della sequenza dell'interfaccia utente nel processo client se il livello di interfaccia dell'utente interno è impostato sulla modalità interfaccia utente completa (vedere MsiSetInternalUI per una descrizione dei livelli dell'interfaccia utente).
- Un servizio registrato per impostazione predefinita quando si usa Windows 2000 e, in questo caso, la tabella della sequenza di esecuzione viene elaborata nel servizio di installazione.
È possibile usare i flag di opzione seguenti per controllare l'esecuzione immediata di azioni personalizzate. Per impostare un'opzione, aggiungere il valore in questa tabella al valore nel campo Type della tabella CustomAction. Nessuno dei flag seguenti deve essere usato con azioni personalizzate di esecuzione posticipata.
-
(impostazione predefinita)
-
Esadecimale: 0x00000000
Decimal: 0
Eseguire sempre. L'azione può essere eseguita due volte se presente in entrambe le tabelle di sequenza.
-
msidbCustomActionTypeFirstSequence
-
Esadecimale: 0x00000100
Decimal: 256
Eseguire non più di una volta se presente in entrambe le tabelle di sequenza. Ignora sempre l'azione nella sequenza di esecuzione se la sequenza dell'interfaccia utente è stata eseguita. Nessun effetto nella sequenza dell'interfaccia utente. L'azione non è necessaria per essere presente o eseguita nella sequenza dell'interfaccia utente da ignorare nella sequenza di esecuzione. Non interessato dalla registrazione del servizio di installazione.
-
msidbCustomActionTypeOncePerProcess
-
Esadecimale: 0x00000200
Decimal: 512
Eseguire una sola volta per processo se in entrambe le tabelle di sequenza. Ignora l'azione nella sequenza di esecuzione se la sequenza dell'interfaccia utente è stata eseguita nello stesso processo, ad esempio entrambe eseguite nel processo client. Usato per impedire azioni che modificano lo stato della sessione, ad esempio i dati della proprietà e del database, di eseguire due volte.
-
msidbCustomActionTypeClientRepeat
-
Esadecimale: 0x00000300
Decimal: 768
Eseguire solo se in esecuzione nel client dopo l'esecuzione della sequenza di interfaccia utente. L'azione viene eseguita solo se la sequenza di esecuzione viene eseguita nel client che segue la sequenza dell'interfaccia utente. Può essere usato per fornire una logica o per eliminare l'elaborazione correlata all'interfaccia utente se già eseguita per la sessione client.
Si noti che per eseguire un'azione personalizzata durante due diverse modalità di esecuzione, creare due voci nella tabella CustomAction . Ad esempio, per avere un'azione personalizzata che chiama una libreria di collegamento dinamica C/C++ (DLL) (Tipo di azione personalizzata 1) sia quando la modalità è MSIRUNMODE_SCHEDULED che MSIRUNMODE_ROLLBACK, inserire due voci nella tabella CustomAction che chiamano la stessa DLL ma che hanno tipi numerici diversi. Includere codice che chiama MsiGetMode per determinare quando eseguire l'azione personalizzata.
Argomenti correlati