Benutzerdefinierter Aktionstyp 17
Diese benutzerdefinierte Aktion ruft eine dll (Dynamic Link Library) auf, die in C oder C++ geschrieben wurde.
Quelle
Die DLL wird während der aktuellen Sitzung mit der Anwendung installiert. Das Quellfeld der CustomAction-Tabelle enthält einen Schlüssel zur Dateitabelle. 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.
Typwert
Fügen Sie den folgenden Wert in die Spalte "Typ" der CustomAction-Tabelle ein, um den grundlegenden numerischen Typ anzugeben.
Konstanten | Hexadezimal | Dezimal |
---|---|---|
msidbCustomActionTypeDll + msidbCustomActionTypeSourceFile- | 0x011 | 17 |
Ziel
Die DLL wird über den Einstiegspunkt aufgerufen, der im Zielfeld der CustomAction-Tabellebenannt ist, wobei ein einzelnes Argument übergeben wird, das das Handle an die aktuelle Installationssitzung ist. Der in der Tabelle angegebene Einstiegspunktname muss mit dem aus der DLL exportierten Wert übereinstimmen. Beachten Sie, dass, wenn die Eintragsfunktion nicht durch eine . DEF-Datei oder durch eine /EXPORT:-Spezifikation, der Name kann einen führenden Unterstrich und ein Suffix "@4" aufweisen. Die aufgerufene Funktion muss die __stdcall Aufrufenskonvention angeben.
Rückgabeverarbeitungsoptionen
Fügen Sie optionale Flagbits in die Spalte "Typ" der CustomAction-Tabelle ein, um Rückgabeverarbeitungsoptionen anzugeben. Eine Beschreibung der Optionen und werte finden Sie unter Benutzerdefinierte Aktion Rückgabeverarbeitungsoptionen.
Ausführungsplanungsoptionen
Fügen Sie optionale Flagbits in die Spalte "Typ" der CustomAction-Tabelle ein, um Ausführungsplanungsoptionen anzugeben. Diese Optionen steuern die mehrfache Ausführung von benutzerdefinierten Aktionen. Eine Beschreibung der Optionen finden Sie unter Benutzerdefinierte Optionen für die Ausführung von Aktionen.
In-Script Ausführungsoptionen
Fügen Sie optionale Flagbits in die Spalte "Typ" der CustomAction-Tabelle ein,, um eine In-Script-Ausführungsoption anzugeben. Mit diesen Optionen wird der Aktionscode in das Ausführungs-, Rollback- oder Commitskript kopiert. Eine Beschreibung der Optionen finden Sie unter Benutzerdefinierte Aktion In-Script Ausführungsoptionen.
Rückgabewerte
Siehe benutzerdefinierte Aktionsrückgabewerte.
Bemerkungen
Eine benutzerdefinierte Aktion, die eine Dynamic Link Library (DLL) aufruft, erfordert ein Handle für die Installationssitzung. Wenn dies auch eine benutzerdefinierte Aktion für verzögerte Ausführung ist, ist die Sitzung möglicherweise während der Ausführung des Installationsskripts nicht mehr vorhanden. Informationen dazu, wie eine benutzerdefinierte Aktion dieses Typs Kontextinformationen abrufen kann, finden Sie unter Abrufen von Kontextinformationen für benutzerdefinierte Aktionen für verzögerte Ausführung.
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. custom Action Type 17 (DLL), müssen die folgenden Sequenzierungseinschränkungen einhalten:
- Die benutzerdefinierte Aktion muss nach der CostFinalize-Aktionsequenziert werden. Dies ist so, dass die benutzerdefinierte Aktion den Pfad auflösen kann, der zum Suchen der DLL erforderlich ist.
- Wenn die Quelldatei noch nicht auf dem Computer installiert ist, müssen benutzerdefinierte Aktionen dieses Typs nach der InstallFiles-Aktionsequenziert werden.
- Wenn die Quelldatei noch nicht auf dem Computer installiert ist, müssen nicht verzögerte benutzerdefinierte Aktionen dieses Typs nach der InstallFinalize-Aktionsequenziert werden.
Verwandte Themen