Erstellen der benutzerdefinierten Aktionen

In der folgenden Tabelle sind die fünf benutzerdefinierten Aktionen aufgeführt, die verwendet werden, um die Beispielspezifikationen zu erfüllen: ProcessAccounts, UninstallAccounts, CreateAccounts, RemoveAccounts und RollbackAccounts. Alle diese benutzerdefinierten Aktionen befinden sich in Dynamic Link-Bibliotheken, die in der Binärtabelle gespeichert sind. Der C++-Quellcode für die Dynamic Link-Bibliotheken, die die benutzerdefinierten Beispielaktionen enthalten, wird im Windows Installer SDK bereitgestellt. ProcessAccounts und UninstallAccounts befinden sich in der Datei Process.cpp. CreateAccount befindet sich in der Datei Create.cpp. RemoveAccount und RollbackAccount befinden sich in der Datei Remove.cpp. Diese Quelldateien können verwendet werden, um die Dateien Process.dll, Create.dll und Remove.dll.

Da das Erstellen oder Entfernen eines Benutzerkontos erhöhte Rechte erfordert, müssen benutzerdefinierte Aktionen zur verzögerten Ausführung, die im Kontext des Systems ausgeführt werden, zum Erstellen, Entfernen oder Rollback von Benutzerkonten verwendet werden. Die benutzerdefinierten Sofortausführungsaktionen ProcessAccounts und UninstallAccounts generieren die zurückgestellten benutzerdefinierten Aktionen zum Erstellen, Entfernen oder Rollback von Benutzerkonten: CreateAccount, RemoveAccount und RollbackAccount.

Da verzögerte benutzerdefinierte Aktionen keine Informationen in Datenbanktabellen lesen können, müssen ProcessAccounts und UninstallUserAccouts eine CustomActionData-Eigenschaft festlegen, um die Informationen in der Tabelle UserAccounts an die zurückgestellten benutzerdefinierten Aktionen zu übergeben, wie unter Abrufenvon Kontextinformationen für benutzerdefinierte Aktionen mit verzögerter Ausführung beschrieben. Wenn das Installationsprogramm das Ausführungsskript ausgeführt, verarbeiten die verzögerten benutzerdefinierten Aktionen Benutzerkonten gemäß den Informationen in der CustomActionData-Eigenschaft.

Da sich alle benutzerdefinierten Aktionen in Dynamic Link-Bibliotheken befinden, die in der Binary-Tabelle gespeichert sind, enthalten sie alle die Konstanten msidbCustomActionTypeDll und msidbCustomActionTypeBinaryData in ihrem numerischen Basistyp. ProcessAccounts und UninstallAccounts sind Beispiele für rein benutzerdefinierten Aktionstyp 1. Informationen zu anderen benutzerdefinierten Aktionstypen finden Sie in der Zusammenfassungsliste aller benutzerdefinierten Aktionstypen.

CreateAccount und RemoveAccount sind benutzerdefinierte Aktionen mit verzögerter Ausführung, die es Diensten nicht ermöglichen, die Identität bestimmter Benutzer zu imitieren. Zu diesen benutzerdefinierten Aktionen gehören die Konstanten msidbCustomActionTypeInScript und msidbCustomActionTypeNoImpersonate, um diese benutzerdefinierten Aktionsausführungsoptionen im Skript anzugeben.

RollbackAccount ist eine benutzerdefinierte Rollbackaktion, die Benutzerkonten nur während einer Rollbackinstallation entfernt. RollbackAccount enthält die Konstanten msidbCustomActionTypeInScript und msidbCustomActionTypeRollback, um diese benutzerdefinierten Aktionsausführungsoptionen im Skript anzugeben.

Diese benutzerdefinierten Aktionen können vertrauliche Daten verarbeiten, z. B. Benutzerkennwörter, die nicht in die Protokolldatei geschrieben werden sollten. Die zurückgestellten benutzerdefinierten Aktionen sollten daher msidbCustomActionTypeHideTarget im benutzerdefinierten Aktionstyp enthalten. Die Namen der zurückgestellten benutzerdefinierten Aktionen müssen auch der Eigenschaftenliste MsiHiddenProperties in der Property -Tabelle hinzugefügt werden, da sofortige benutzerdefinierte Aktionen Daten mithilfe der CustomActionData-Eigenschaft an zurückgestellte benutzerdefinierte Aktionen übergeben.

Benutzerdefinierte Aktion DLL-Einstiegspunkt Benutzerdefinierter Aktionstyp
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.

Fahren Sie mit dem Erstellen der CustomAction-Tabelle fort.