MsiEmbeddedChainer テーブル

このテーブルを使用して、複数パッケージのインストールを作成します。 MsiEmbeddedChainer テーブルの各行では、1 つのパッケージから複数の Windows インストーラー パッケージをインストールするために使用できる、異なるユーザー定義関数を参照します。 ユーザー定義関数の実行可能ファイルは、Windows インストーラー パッケージ内に格納されます。

Windows インストーラー 4.0 以前: サポートされていません。 このテーブルは、Windows インストーラー 4.5 以降で使用できます。

リモート デスクトップ サービス ロールが有効になっている Windows Server 2008 R2: サポートされていません。 リモート デスクトップ サービス ロールが有効になっている場合、MsiEmbeddedChainer テーブルを使用した複数パッケージのインストールは失敗します。

1 つのパッケージから複数のパッケージをインストールするには、MsiEmbeddedChainer テーブルに一覧表示されているユーザー定義関数の 1 つで、アクションを実行するために評価される条件付きステートメントが Condition フィールドに含まれている必要があります。 複数の関数に、実行のために評価される条件がある場合、実行できる関数は 1 つだけです。 このケースはエラーであり、どの関数が実行されるかを保証することはできません。 インストールで他のカスタム アクションが必要な場合は、CustomAction テーブルとシーケンス テーブルにこれらを作成する必要があります。

関数では、MsiJoinTransaction 関数を呼び出して現在のインストールに参加し、MsiEndTransaction 関数を呼び出して複数のパッケージのインストールをコミットする必要があります。 MsiEndTransaction を呼び出す前に関数が返された場合、インストーラーではすべてのインストールをロールバックします。

MsiEmbeddedUI テーブルには次の列があります。

Column 種類 キー Nullable
MsiEmbeddedChainer Identifier Y N
条件 Condition N Y
CommandLine Formatted N Y
source CustomSource N N
Type 整数 N N

 

[列]

MsiEmbeddedChainer

テーブルの主キー。 この値は、この行で記述されたユーザー定義関数の一意識別子です。

Condition

ユーザー定義関数を実行するための条件付きステートメント。 このフィールドによって評価されるプロパティ値を変更する変換を使用して、MsiEmbeddedChainer テーブルに一覧表示されている関数を有効または無効にすることができます。 詳細については、条件付きステートメントでのプロパティの使用に関する記事を参照してください。

CommandLine

このフィールドの値は、Source 列に示されている実行可能ファイルに渡されるコマンド ライン文字列の一部です。 インストーラーでは、このフィールドの値をトランザクション ハンドルに追加してコマンド ラインを生成します。 この列の値が null の場合、コマンド ラインはトランザクション ハンドルのみで構成されます。

Source

ユーザー定義関数の実行可能ファイルの場所。 Type 列の値が 2 の場合、この列には Binary テーブルへの外部キーを含めることができます。 Type 列の値が 18 の場合、この列には File テーブルへの外部キーを含めることができます。 Type 列の値が 50 の場合、この列には Property テーブルへの外部キーを含めることができます。

Type

MsiEmbeddedChainer テーブルに一覧表示されている関数については、次のカスタム アクションの数値型を使用して説明します。 この列には、次の 3 つの数値型の値のみを含めることができます。カスタム アクション フラグのその他の組み合わせは無視されます。

カスタム アクションの種類 カスタム アクションのフラグ 16 進数 Decimal (10 進数型)
カスタム アクションの種類 2 msidbCustomActionTypeExe + msidbCustomActionTypeBinaryData 0x002 2
カスタム アクションの種類 18 msidbCustomActionTypeExe + msidbCustomActionTypeSourceFile 0x012 18
カスタム アクションの種類 50 msidbCustomActionTypeExe + msidbCustomActionTypeProperty 0x032 50

 

解説

Windows インストーラーによって、アプリケーションのアドバタイズ中にこのテーブル内のユーザー定義関数の実行が妨げられることはありません。 Condition 列の条件付きステートメントを使用すると、アドバタイズ中に関数が実行されないようにすることができます。

Windows インストーラーには、Windows インストーラー パッケージの上にリッチ ユーザー インターフェイスをビルドするための、埋め込み以外の外部 UI ハンドラーも用意されています。 Windows インストーラーで外部 UI ハンドラーを使用する方法の詳細については、「MsiSetExternalUI を使用したインストールの監視」を参照してください。

MsiPackageCertificate テーブルには、複数パッケージのインストールを行うインストール パッケージの ID の検証に使用されるデジタル署名証明書が一覧表示されます。 このテーブルを使用すると、複数パッケージのインストールで、管理者による応答が必要な "ユーザー アカウント制御" (UAC) のプロンプトが表示される回数を減らすことができます。