遅延実行カスタム アクションのコンテキスト情報の取得
インストール スクリプトは、それが書き込まれたインストール セッションの外部で実行できるため、インストール スクリプトの実行中にセッションが存在しなくなった可能性があります。 この場合、インストール シーケンス中に設定された元のセッション ハンドルとプロパティは、遅延実行カスタム アクションでは使用できません。 セッション ハンドルを必要とする関数は、コンテキスト情報を取得できるいくつかのメソッドに制限されます。それ以外の場合は、スクリプトの実行中に必要なプロパティをインストール スクリプトに書き込む必要があります。 たとえば、ダイナミック リンク ライブラリ (DLL) を呼び出す遅延カスタム アクションは、非常に限られた量の情報を取得するためにのみ使用できるハンドルを渡します。 セッション ハンドルを必要としない関数には、遅延カスタム アクションからアクセスできます。
遅延実行カスタム アクションは、ハンドルを必要とする次の関数のみを呼び出すことに制限されます。
機能 | 説明 |
---|---|
MsiGetProperty | 遅延実行カスタム アクションでの使用時は、限られたプロパティ セット (CustomActionData プロパティ、ProductCode プロパティ、UserSID プロパティ) をサポートします。[カスタム アクションをコミットする] では、MsiGetProperty 関数を使用して ProductCode プロパティを取得することはできません。 コミット カスタム アクションでは、CustomActionData プロパティを使用して製品コードを取得できます。 |
MsiFormatRecord | CustomActionData プロパティと ProductCode プロパティ 遅延実行カスタム アクションで使用する場合は、限られたプロパティ セットをサポートします。 |
MsiGetMode | 遅延実行カスタム アクションから呼び出された場合、カスタム アクション をコミット、またはカスタム アクションをロールバック 、モード パラメーター のMSIRUNMODE_SCHEDULED、MSIRUNMODE_COMMIT、またはMSIRUNMODE_ROLLBACKを確認するように要求された場合、MsiGetMode は True または False を返します。 遅延、コミット、またはロールバックのカスタム アクションから他の実行モード パラメーターを確認する要求は、False を返します。 |
MsiGetLanguage | 現在の製品の数値言語 ID。カスタム アクションをコミット、MsiGetLanguage 関数を使用できません。 コミット カスタム アクションでは、CustomActionData プロパティを使用して数値言語 ID を取得できます。 |
MsiProcessMessage | カスタム アクションからのエラー メッセージまたは進行状況メッセージを処理します。 |
JScript または VBScript で記述されたカスタム アクションには、Sessionオブジェクトインストールする必要があります。 これはセッション オブジェクト の種類で、インストーラーによって "Session" という名前のスクリプトにアタッチされます。 Session オブジェクトはインストール ロールバック中に存在しない可能性があるため、スクリプトで記述された遅延カスタム アクションでは、コンテキストを取得するために、Session オブジェクトの次のいずれかのメソッドまたはプロパティを使用する必要があります。
名前 | 説明 |
---|---|
Mode Property | MSIRUNMODE_SCHEDULEDの場合にのみ True を返します。 |
Property プロパティ (Session オブジェクト) | CustomActionData プロパティ、ProductCode プロパティ、または UserSID プロパティを返します。 |
Language プロパティ (Session オブジェクト) | インストール セッションの数値言語 ID を返します。 |
メッセージメソッド | エラーと進行状況を処理するために呼び出されます。 |
Installer プロパティ | レジストリ アクセスやインストーラー構成管理などのセッション以外の関数に使用される親オブジェクトを返します。 |
インストール シーケンスがスクリプトに処理されるときに設定されたプロパティ値は、スクリプトの実行時に使用できない場合があります。 スクリプトの実行中にカスタム アクションから常にアクセスできるのは、次の制限付きプロパティ のセットのみです。
プロパティ名 | 説明 |
---|---|
カスタムアクションデータ | カスタム アクションがシーケンス テーブルで処理される時点の値。 CustomActionData プロパティは、遅延実行カスタム アクションでのみ使用できます。 即時カスタム アクションには、このプロパティへのアクセス権がありません。 |
ProductCode | 製品の一意のコード、GUID 文字列。 |
UserSID | インストーラーによってユーザーのセキュリティ識別子 (SID) に設定されます。 |
遅延実行カスタム アクションで他のプロパティ データが必要な場合は、その値をインストール スクリプトに格納する必要があります。 これは、2 つ目のカスタム アクションを使用して行うことができます。
遅延実行カスタム アクションで使用するために、プロパティの値をインストール スクリプトに書き込むには
- 対象のプロパティを遅延実行カスタム アクションと同じ名前のプロパティに設定する小さなカスタム アクションをインストール シーケンスに挿入します。 たとえば、遅延実行カスタム アクションの主キーが "MyAction" の場合、"MyAction" という名前のプロパティを取得する必要があるプロパティ X に設定します。 "MyAction" カスタム アクションの前に、インストール シーケンスで "MyAction" プロパティを設定する必要があります。 任意の種類のカスタム アクションでコンテキスト データを設定できますが、最も簡単な方法は、プロパティの割り当てカスタム アクション (たとえば、カスタム アクションの種類 51 ) を使用することです。
- インストール シーケンスが処理されると、インストーラーはプロパティ X の値をプロパティ CustomActionData の値として実行スクリプトに書き込みます。
関連トピック