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.
Zugehörige Themen