Freigeben über


Benutzerdefinierter Aktionstyp 17

Diese benutzerdefinierte Aktion ruft eine in C oder C++ geschriebene DLL (Dynamic Link Library) auf.

`Source`

Die DLL wird während der aktuellen Sitzung zusammen mit der Anwendung installiert. Das Source-Feld der CustomAction-Tabelle enthält einen Schlüssel für die Binary-Tabelle. Der Speicherort des benutzerdefinierten Aktionscodes wird durch die Auflösung des Zielpfads für diese Datei bestimmt. Daher muss diese benutzerdefinierte Aktion aufgerufen werden, nachdem diese Datei installiert wurde und bevor sie entfernt wird.

Type-Wert

Fügen Sie den folgenden Wert in die Type-Spalte der CustomAction-Tabelle ein, um den grundlegenden numerischen Typ anzugeben.

Konstanten Hexadezimal Decimal
msidbCustomActionTypeDll + msidbCustomActionTypeSourceFile 0x011 17

 

Ziel

Die DLL wird über den Einstiegspunkt aufgerufen, der im Target-Feld der CustomAction-Tabelle benannt ist, wobei ein einzelnes Argument übergeben wird, das das Handle für die aktuelle Installationssitzung darstellt. Der in der Tabelle angegebene Einstiegspunktname muss mit dem aus der DLL exportierten übereinstimmen. Beachten Sie, dass, wenn die Einstiegsfunktion weder durch eine DEF-Datei noch durch eine „/EXPORT:“-Linkerspezifikation angegeben wird, der Name möglicherweise einen führenden Unterstrich und das Suffix „@4“ aufweist. Die aufgerufene Funktion muss die „__stdcall“-Aufrufkonvention angeben.

Optionen für die Rückgabeverarbeitung

Fügen Sie optionale Flagbits in die Type-Spalte der CustomAction-Tabelle ein, um Optionen für die Rückgabeverarbeitung anzugeben. Eine Beschreibung der Optionen und Werte finden Sie unter Optionen für die Rückgabeverarbeitung von benutzerdefinierten Aktionen.

Optionen für die Ausführungsplanung

Fügen Sie optionale Flagbits in die Type-Spalte der CustomAction-Tabelle ein, um Optionen für die Ausführungsplanung anzugeben. Diese Optionen steuern die mehrfache Ausführung benutzerdefinierter Aktionen. Eine Beschreibung der Optionen finden Sie unter Optionen für die Ausführungsplanung benutzerdefinierter Aktionen.

Optionen für die skriptinterne Ausführung

Fügen Sie optionale Flagbits in die Type-Spalte der CustomAction-Tabelle ein, um Optionen für die skriptinterne Ausführung anzugeben. Diese Optionen kopieren den Aktionscode in das Ausführungs-, Rollback- oder Commitskript. Eine Beschreibung der Optionen finden Sie unter Optionen für die skriptinterne Ausführung von benutzerdefinierten Aktionen.

Rückgabewerte

Weitere Informationen finden Sie unter Rückgabewerte für benutzerdefinierte Aktionen.

Bemerkungen

Eine benutzerdefinierte Aktion, die eine DLL (Dynamic Link Library) aufruft, erfordert ein Handle für die Installationssitzung. Wenn dies außerdem eine verzögert auszuführende benutzerdefinierte Aktion ist, ist die Sitzung während der Ausführung des Installationsskripts möglicherweise nicht mehr vorhanden. Informationen dazu, wie eine benutzerdefinierte Aktion dieses Typs Kontextinformationen abrufen kann, finden Sie unter Abrufen von Kontextinformationen für verzögert auszuführende benutzerdefinierte Aktionen.

Benutzerdefinierte Aktionen werden in einem separaten Thread ausgeführt und haben möglicherweise eingeschränkten Zugriff auf das System. Benutzerdefinierte Aktionen, die asynchron ausgeführt werden, blockieren den Hauptthread beim Beenden der aktuellen Sequenz oder der Installationssitzung, bis sie zurückgegeben werden.

Benutzerdefinierte Aktionen, die auf eine installierte Datei als Quelle verweisen, z. B. Benutzerdefinierter Aktionstyp 17 (DLL), müssen die folgenden Sequenzierungseinschränkungen einhalten:

  • Die benutzerdefinierte Aktion muss nach der CostFinalize-Aktion sequenziert werden. Dies ist so, damit die benutzerdefinierte Aktion den Pfad auflösen kann, der zum Auffinden der DLL erforderlich ist.
  • Wenn die Quelldatei noch nicht auf dem Computer installiert ist, müssen verzögerte (skriptinterne) benutzerdefinierte Aktionen dieses Typs nach der InstallFiles-Aktion sequenziert werden.
  • Wenn die Quelldatei noch nicht auf dem Computer installiert ist, müssen nicht verzögerte benutzerdefinierte Aktionen dieses Typs nach der InstallFinalize-Aktion sequenziert werden.

Custom_Actions

Verzögert auszuführende benutzerdefinierte Aktionen

DLLs (Dynamic Link Library)