ICE の構築

ICE リファレンスにリストされている既存の ICE カスタム アクションの中に必要な内部整合性評価ツールが見つからない場合は、パッケージを検証するために独自の ICE を準備する必要があります。

ICE カスタム アクションを作成するときは、次の操作を行う必要があります。

  • ICE は、次の表に示す型のカスタム アクションのみに基づいて行います。
  • MsiProcessMessage を呼び出し、INSTALLMESSAGE_USER 型のメッセージを送信します。 ICE メッセージを作成するときは、ICE メッセージ ガイドラインのメッセージ形式に従ってください。
  • API エラーをキャプチャし、常に ERROR_SUCCESS を返すように ICE を記述します。 これは、ICE の障害後に後続のカスタム アクションを実行できるようにするために必要です。

ICE カスタム アクションは、次のカスタム アクションの種類に制限されます。

カスタム アクション タイプ 説明
カスタム アクション タイプ 1 バイナリ ストリーム内の DLL
カスタム アクション タイプ 2 バイナリ ストリーム内の EXE
カスタム アクション タイプ 5 バイナリ ストリームの JScript
カスタム アクション タイプ 6 バイナリ ストリームの VBScript
カスタム アクション タイプ 37 文字列としての JScript コード
カスタム アクション タイプ 38 文字列としての VBScript コード

 

ICE カスタム アクションを作成するときは、次の操作を行わないでください。

  • ICE が受信するエンジンへのハンドルがインストーラー データベースのインストール インスタンスであると想定しないでください。 インストール インスタンスでない場合は、特定のプロパティが定義されず、ソース ディレクトリとターゲット ディレクトリが解決されず、現在の機能の状態が定義されません。
  • インストーラー アクション、カスタム アクション、または別の ICE の以前の実行、または非実行に依存しないでください。 以前の ICE によって任意のテーブルに一時列が作成されている可能性があるため、作成者は可能な限り名前で列を参照する必要があります。 ICE は終了する前に一時的な列またはテーブルをクリーンアップする必要があります。
  • 作成者がデータベースのソース ディレクトリのイメージにアクセスできるとは想定しないでください。
  • データベースに加えられた変更は永続しないものと想定しないでください。

C++ の ICE サンプル

VBScript のサンプル ICE