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

Da das Installationsskript außerhalb der Installationssitzung ausgeführt werden kann, in der es geschrieben wurde, ist die Sitzung während der Ausführung des Installationsskripts möglicherweise nicht mehr vorhanden. In diesem Fall sind das ursprüngliche Sitzungshandle und die Eigenschaften, die während der Installationssequenz festgelegt wurden, für eine verzögert auszuführende benutzerdefinierte Aktion nicht verfügbar. Alle Funktionen, die ein Sitzungshandle erfordern, sind auf einige wenige Methoden beschränkt, die Kontextinformationen abrufen können. Oder andernfalls müssen Eigenschaften, die während der Skriptausführung benötigt werden, in das Installationsskript geschrieben werden. Beispielsweise übergeben verzögerte benutzerdefinierte Aktionen, die DLLs (Dynamic-Link Libraries) aufrufen, ein Handle, das nur zum Abrufen einer sehr begrenzten Menge von Informationen verwendet werden kann. Auf Funktionen, die kein Sitzungshandle erfordern, kann über eine verzögerte benutzerdefinierte Aktion zugegriffen werden.

Verzögert auszuführende benutzerdefinierte Aktionen sind auf das Aufrufen nur der folgenden Funktionen beschränkt, die ein Handle erfordern.

Funktion BESCHREIBUNG
MsiGetProperty Unterstützt einen begrenzten Satz von Eigenschaften, wenn sie mit verzögert auszuführenden benutzerdefinierten Aktionen verwendet wird: die CustomActionData-Eigenschaft, ProductCode-Eigenschaft und UserSID-Eigenschaft. Benutzerdefinierte Commit-Aktionen können nicht die MsiGetProperty-Funktion verwenden, um die ProductCode-Eigenschaft abzurufen. Benutzerdefinierte Commit-Aktionen können die CustomActionData-Eigenschaft verwenden, um den Produktcode abzurufen.
MsiFormatRecord Unterstützt einen begrenzten Satz von Eigenschaften, wenn sie mit verzögert auszuführenden benutzerdefinierten Aktionen verwendet werden: die Eigenschaften „CustomActionData“ und „ProductCode“.
MsiGetMode Wenn Benutzerdefinierte Commit-Aktionen oder Benutzerdefinierte Rollback-Aktionen aus verzögert aufzurufenden benutzerdefinierten Aktionen aufgerufen werden, gibt MsiGetMode „True“ oder „False“ zurück, wenn die Überprüfung der Modusparameter MSIRUNMODE_SCHEDULED, MSIRUNMODE_COMMIT oder MSIRUNMODE_ROLLBACK gefordert wird. Anforderungen zum Überprüfen anderer Ausführungsmodusparameter aus einer benutzerdefinierten verzögerten, commit- oder rollback-Aktion geben „False“ zurück.
MsiGetLanguage Die numerische Sprach-ID für das aktuelle Produkt. Benutzerdefinierte Commit-Aktionen können die MsiGetLanguage-Funktion nicht verwenden. Benutzerdefinierte Commit-Aktionen können die CustomActionData-Eigenschaft verwenden, um die numerische Sprach-ID abzurufen.
MsiProcessMessage Verarbeitet Fehler- oder Statusmeldungen aus der benutzerdefinierten Aktion.

 

Eine benutzerdefinierte Aktion, die in JScript oder VBScript geschrieben ist, erfordert die Installation des Session-Objekts. Dieses ist vom Typ Session-Objekt, und das Installationsprogramm fügt es dem Skript mit dem Namen „Session“ an. Da das Session-Objekt während eines Installationsrollbacks möglicherweise nicht vorhanden ist, muss eine im Skript geschriebene verzögerte benutzerdefinierte Aktion eine der folgenden Methoden oder Eigenschaften des Session-Objekts verwenden, um seinen Kontext abzurufen.

Name BESCHREIBUNG
Mode-Eigenschaft Gibt „True“ nur für MSIRUNMODE_SCHEDULED zurück.
Property-Eigenschaft (Session-Objekt) Gibt die CustomActionData-Eigenschaft, ProductCode-Eigenschaft oder UserSID-Eigenschaft zurück.
Language-Eigenschaft (Session-Objekt) Gibt die numerische Sprach-ID der Installationssitzung zurück.
Message-Methode Wird aufgerufen, um Fehler und Status zu behandeln.
Installer-Eigenschaft Gibt das übergeordnete Objekt zurück, das für Nicht-Sitzungsfunktionen wie Registrierungszugriff und Installer-Konfigurationsverwaltung verwendet wird.

 

Eigenschaftswerte, die zum Zeitpunkt der Verarbeitung der Installationssequenz in ein Skript festgelegt werden, sind möglicherweise zum Zeitpunkt der Skriptausführung nicht verfügbar. Nur auf den folgenden eingeschränkten Satz von Eigenschaften kann während der Skriptausführung immer von benutzerdefinierten Aktionen zugegriffen werden.

Eigenschaftenname BESCHREIBUNG
CustomActionData Wert zu dem Zeitpunkt, an dem eine benutzerdefinierte Aktion in der Sequence-Tabelle verarbeitet wird. Die CustomActionData-Eigenschaft ist nur für verzögert auszuführende benutzerdefinierte Aktionen verfügbar. Sofortige benutzerdefinierte Aktionen haben keinen Zugriff auf diese Eigenschaft.
ProductCode Eindeutiger Code für das Produkt, eine GUID-Zeichenfolge.
UserSID Wird vom Installer auf die Sicherheits-ID (SID) des Benutzers festgelegt.

 

Wenn andere Eigenschaftsdaten für die verzögert auszuführende benutzerdefinierte Aktion erforderlich sind, müssen deren Werte im Installationsskript gespeichert werden. Dies kann mithilfe einer zweiten benutzerdefinierten Aktion erfolgen.

So schreiben Sie den Wert einer Eigenschaft in das Installationsskript zur Verwendung während einer verzögert auszuführenden benutzerdefinierten Aktion

  1. Fügen Sie eine kleine benutzerdefinierte Aktion in die Installationssequenz ein, die die betreffende Eigenschaft auf eine Eigenschaft mit demselben Namen wie dem der verzögert auszuführenden benutzerdefinierten Aktion festlegt. Wenn beispielsweise der Primärschlüssel für die verzögert auszuführende benutzerdefinierte Aktion „MyAction“ lautet, legen Sie eine Eigenschaft mit dem Namen „MyAction“ auf die Eigenschaft „X“ fest, die Sie abrufen müssen. Sie müssen die Eigenschaft „MyAction“ in der Installationssequenz vor der benutzerdefinierten Aktion „MyAction“ festlegen. Obwohl jeder Typ von benutzerdefinierter Aktion die Kontextdaten festlegen kann, besteht die einfachste Methode darin, eine benutzerdefinierte Aktion für die Eigenschaftenzuweisung zu verwenden (z. B. Benutzerdefinierter Aktionstyp 51).
  2. Zum Zeitpunkt der Verarbeitung der Installationssequenz schreibt das Installationsprogramm den Wert der Eigenschaft „X“ als Wert der Eigenschaft „CustomActionData“ in das Ausführungsskript.

Informationen zu Eigenschaften

Verwenden von Eigenschaften

Eigenschaftenreferenz