Partager via


Création des actions personnalisées

Le tableau ci-dessous répertorie les cinq actions personnalisées utilisées pour répondre aux exemples de spécifications : ProcessAccounts, UninstallAccounts, CreateAccounts, RemoveAccounts et RollbackAccounts. Toutes ces actions personnalisées se trouvent dans des bibliothèques de liens dynamiques stockées dans la table Binary. Le code source C++ pour les bibliothèques de liens dynamiques contenant les exemples d’actions personnalisées est fourni dans le Kit de développement logiciel (SDK) Windows Installer. ProcessAccounts et UninstallAccounts se trouvent dans le fichier Process.cpp. CreateAccount se trouve dans le fichier Create.cpp. RemoveAccount et RollbackAccount se trouvent dans le fichier Remove.cpp. Ces fichiers sources peuvent être utilisés pour créer les fichiers Process.dll, Create.dll et Remove.dll.

Étant donné que la création ou la suppression d’un compte d’utilisateur nécessite des privilèges élevés, les actions personnalisées d’exécution différée qui s’exécutent dans le contexte du système doivent être utilisées pour créer, supprimer ou restaurer des comptes d’utilisateur. Les actions personnalisées d’exécution immédiate, ProcessAccounts et UninstallAccounts, génèrent les actions personnalisées différées qui créent, suppriment ou restaurent des comptes d’utilisateur : CreateAccount, RemoveAccount et RollbackAccount.

Étant donné que les actions personnalisées différées ne peuvent pas lire les informations dans les tables de base de données, ProcessAccounts et UninstallUserAccouts doivent définir une propriété CustomActionData pour transmettre les informations de la table UserAccounts aux actions personnalisées différées, comme décrit dans Obtention d’informations de contexte pour les actions personnalisées d’exécution différée. Lorsque le programme d’installation exécute le script d’exécution, les actions personnalisées différées gèrent les comptes d’utilisateur en fonction des informations contenues dans la propriété CustomActionData.

Étant donné que toutes les actions personnalisées se trouvent dans des bibliothèques de liens dynamiques stockées dans la table Binary, elles incluent toutes les constantes msidbCustomActionTypeDll et msidbCustomActionTypeBinaryData dans leur type numérique de base. ProcessAccounts et UninstallAccounts sont des exemples de pures actions personnalisées de type 1. Pour plus d’informations sur d’autres types d’actions personnalisées, consultez la Liste récapitulative de tous les types d’actions personnalisées.

CreateAccount et RemoveAccount sont des actions personnalisées d’exécution différée qui ne permettent pas aux services d’emprunter l’identité d’utilisateurs particuliers. Ces actions personnalisées incluent les constantes msidbCustomActionTypeInScript et msidbCustomActionTypeNoImpersonate pour spécifier ces options d’exécution d’action personnalisée dans un script.

RollbackAccount est une action personnalisée de restauration qui supprime uniquement les comptes d’utilisateur lors d’une installation de restauration. RollbackAccount inclut les constantes msidbCustomActionTypeInScript et msidbCustomActionTypeRollback pour spécifier ces options d’exécution d’action personnalisée dans un script.

Ces actions personnalisées peuvent gérer des données sensibles telles que les mots de passe utilisateur, qui ne doivent pas être écrits dans le fichier journal. Les actions personnalisées différées doivent donc inclure msidbCustomActionTypeHideTarget dans le type d’action personnalisée. Les noms des actions personnalisées différées doivent également être ajoutés à la liste de propriétés MsiHiddenProperties dans la table Property en raison de la façon dont les actions personnalisées immédiates transmettent des données aux actions personnalisées différées à l’aide de la propriété CustomActionData.

Action personnalisée Point d’entrée de la DLL Type d’action personnalisé
ProcessAccounts ProcessUserAccounts dans Process.dll. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData = 1
UninstallAccounts UninstallUserAccounts dans Process.dll. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData = 1
CreateAccount CreateUserAccount dans Create.dll. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate + msidbCustomActionTypeHideTarget = 11265.
RemoveAccount RemoveUserAccount dans Remove.dll. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate + msidbCustomActionTypeHideTarget = 11265.
RollbackAccount RemoveUserAccount dans Remove.dll. msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData + msidbCustomActionTypeInScript + msidbCustomActionTypeRollback + msidbCustomActionTypeHideTarget = 9473.

 

Passez à la Création de la table CustomAction.