Freigeben über


Benutzerdefinierter Aktionstyp 1

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

`Source`

Die DLL wird aus einem temporären binären Datenstrom generiert. Das Source-Feld der CustomAction-Tabelle enthält einen Schlüssel für die Binary-Tabelle.

Die Data-Spalte in der Binary-Tabelle enthält die Datenstromdaten. Jeder Zeile wird ein separater Datenstrom zugeordnet. Neue Binärdaten können aus einer Datei eingefügt werden, indem MsiRecordSetStream gefolgt von MsiViewModify verwendet wird, um den Datensatz in die Tabelle einzufügen. Wenn die benutzerdefinierte Aktion aufgerufen wird, werden die Datenstromdaten in eine temporäre Datei kopiert, die dann abhängig vom Typ der benutzerdefinierten Aktion verarbeitet wird.

Type-Wert

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

Konstanten Hexadezimal Decimal
msidbCustomActionTypeDll + msidbCustomActionTypeBinaryData 0x001 1

 

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.

Wenn eine Datenbanktabelle exportiert wird, wird jeder Datenstrom als separate Datei in den nach der Tabelle benannten Unterordner geschrieben, wobei der Primärschlüssel als Dateiname (Name-Spalte für die Binary-Tabelle) mit der Standarderweiterung „.ibd“ verwendet wird. Für den Namen sollte das 8.3-Format verwendet werden, wenn das Dateisystem oder das Versionskontrollsystem keine langen Dateinamen unterstützt. Die persistente Archivdatei ersetzt die Datenstromdaten durch den verwendeten Dateinamen, sodass die Daten beim Importieren der Tabelle gefunden werden können.

Custom_Actions

DLLs (Dynamic Link Library)

Abrufen von Kontextinformationen für verzögert auszuführende benutzerdefinierte Aktionen