Freigeben über


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 DLLs (Dynamic Link Libraries), die in der Binary-Tabelle gespeichert sind. Der C++-Quellcode für die DLLs (Dynamic Link Libraries), 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“ zu erstellen.

Da die Erstellung oder Entfernung eines Benutzerkontos erhöhte Berechtigungen erfordert, müssen verzögerte benutzerdefinierte Aktionen, die im Kontext des Systems ausgeführt werden, zum Erstellen, Entfernen oder Zurücksetzen von Benutzerkonten verwendet werden. Die sofortigen benutzerdefinierten Aktionen „ProcessAccounts“ und „UninstallAccounts“ generieren die verzögerten 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 „UninstallUserAccounts“ eine CustomActionData-Eigenschaft festlegen, um die Informationen in der Tabelle „UserAccounts“ an die verzögerten benutzerdefinierten Aktionen zu übergeben, wie unter Abrufen von Kontextinformationen für verzögerte benutzerdefinierte Aktionen beschrieben. Wenn das Installationsprogramm das Ausführungsskript ausführt, behandeln die verzögerten benutzerdefinierten Aktionen Benutzerkonten gemäß den Informationen in der CustomActionData-Eigenschaft.

Da sich alle benutzerdefinierten Aktionen in DLLs (Dynamic Link Libraries) 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 reine benutzerdefinierte Aktionen vom Typ 1. Informationen zu anderen benutzerdefinierten Aktionstypen finden Sie in der Zusammenfassungsliste aller benutzerdefinierten Aktionstypen.

„CreateAccount“ und „RemoveAccount“ sind verzögerte benutzerdefinierte Aktionen, die es Diensten nicht ermöglichen, bestimmte Benutzer*innen zu imitieren. Zu diesen benutzerdefinierten Aktionen gehören die Konstanten „msidbCustomActionTypeInScript“ und „msidbCustomActionTypeNoImpersonate“, um diese Optionen für die Skriptausführung der benutzerdefinierten Aktion anzugeben.

„RollbackAccount“ ist eine benutzerdefinierte Rollbackaktion, die Benutzerkonten nur während einer Rollbackinstallation entfernt. „RollbackAccount“ umfasst die Konstanten „msidbCustomActionTypeInScript“ und „msidbCustomActionTypeRollback“, um diese Optionen für die Skriptausführung der benutzerdefinierten Aktion anzugeben.

Diese benutzerdefinierten Aktionen können vertrauliche Daten wie Benutzerkennwörter verarbeiten, die nicht in die Protokolldatei geschrieben werden sollten. Die verzögerten benutzerdefinierten Aktionen sollten daher „msidbCustomActionTypeHideTarget“ im benutzerdefinierten Aktionstyp enthalten. Die Namen der verzögerten benutzerdefinierten Aktionen müssen auch der MsiHiddenProperties-Eigenschaftenliste in der Property-Tabelle hinzugefügt werden, und zwar aufgrund der Art und Weise, wie sofortige benutzerdefinierte Aktionen Daten mithilfe der CustomActionData-Eigenschaft an verzögerte 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 fort mit: Erstellen der CustomAction-Tabelle.