Creazione di azioni personalizzate
La tabella seguente elenca le cinque azioni personalizzate usate per soddisfare le specifiche di esempio: ProcessAccounts, UninstallAccounts, CreateAccounts, RemoveAccounts e RollbackAccounts. Tutte queste azioni personalizzate si trovano in librerie di collegamento dinamico archiviate nella tabella binaria. Il codice sorgente C++ per le librerie a collegamento dinamico contenente le azioni personalizzate di esempio è disponibile in Windows Installer SDK. ProcessAccounts e UninstallAccounts si trovano nel file Process.cpp. CreateAccount si trova nel file Create.cpp. RemoveAccount e RollbackAccount si trovano nel file Remove.cpp. Questi file di origine possono essere usati per creare i file Process.dll, Create.dll e Remove.dll.
Poiché la creazione o la rimozione di un account utente richiede privilegi elevati, è necessario usare azioni personalizzate di esecuzione posticipata eseguite nel contesto del sistema per creare, rimuovere o eseguire il rollback degli account utente. Le azioni personalizzate di esecuzione immediata, ProcessAccounts e UninstallAccounts, generano le azioni personalizzate posticipate che creano, rimuovono o rollback gli account utente: CreateAccount, RemoveAccount e RollbackAccount.
Poiché le azioni personalizzate posticipate non possono leggere informazioni nelle tabelle di database, ProcessAccounts e UninstallUserAccouts devono impostare una proprietà CustomActionData per passare le informazioni nella tabella UserAccounts alle azioni personalizzate posticipate, come descritto in Ottenere informazioni di contesto per azioni personalizzate di esecuzione posticipata. Quando il programma di installazione esegue lo script di esecuzione, le azioni personalizzate posticipate gestiscono gli account utente in base alle informazioni contenute nella proprietà CustomActionData.
Poiché tutte le azioni personalizzate si trovano in librerie a collegamento dinamico archiviate nella tabella Binary, tutte includono le costanti msidbCustomActionTypeDll e msidbCustomActionTypeBinaryData nel tipo numerico di base. ProcessAccounts e UninstallAccounts sono esempi di tipo di azione personalizzata pura 1. Per informazioni su altri tipi di azione personalizzati, vedere l'elenco riepilogo di tutti i tipi di azione personalizzati.
CreateAccount e RemoveAccount sono azioni personalizzate di esecuzione posticipata che non consentono ai servizi di rappresentare determinati utenti. Queste azioni personalizzate includono le costanti msidbCustomActionTypeInScript e msidbCustomActionTypeNoImpersonate per specificare queste opzioni di esecuzione nello script personalizzate.
RollbackAccount è un'azione personalizzata di rollback che rimuove solo gli account utente durante un'installazione di rollback. RollbackAccount include le costanti msidbCustomActionTypeInScript e msidbCustomActionTypeRollback per specificare queste opzioni di esecuzione nello script personalizzate.
Queste azioni personalizzate possono gestire dati sensibili, ad esempio password utente, che non devono essere scritti nel file di log. Le azioni personalizzate posticipate devono pertanto includere msidbCustomActionTypeHideTarget nel tipo di azione personalizzata. I nomi delle azioni personalizzate posticipate devono anche essere aggiunti all'elenco delle proprietà MsiHiddenProperties nella tabella Property a causa del modo in cui le azioni personalizzate immediate passano i dati alle azioni personalizzate posticipate tramite la proprietà CustomActionData.
Azione personalizzata | Punto di ingresso DLL | Tipo di azione personalizzato |
---|---|---|
ProcessAccounts | ProcessUserAccounts in Process.dll. | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData = 1 |
UninstallAccounts | UninstallUserAccounts in Process.dll. | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData = 1 |
CreateAccount | CreateUserAccount in Create.dll. | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate + msidbCustomActionTypeHideTarget = 11265. |
RemoveAccount | RemoveUserAccount in Remove.dll. | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate + msidbCustomActionTypeHideTarget = 11265. |
RollbackAccount | RemoveUserAccount in Remove.dll. | msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeRollback + msidbCustomActionTypeHideTarget = 9473. |
Continuare a Creare la tabella CustomAction.