内部一貫性エバリュエーター - ICE

内部一貫性エバリュエーター (別名: ICE) は、VBScript、JScript に、または DLL または EXE として記述されたカスタム アクションです。 これらのカスタム アクションを実行すると、データベース内のエントリが個別に調べられたときに有効だがデータベース全体のコンテキストで正しくない動作を引き起こす可能性があるデータベース レコードのエントリをスキャンします。 これは、MsiViewModify を使用して個々のレコードに対して行われる検証とは異なる点にご注意ください。

たとえば、Component テーブルでは、MsiViewModify を使用して個別にテストする際にすべて有効な複数のコンポーネントをリストできます。 ただし、2 つのコンポーネントがコンポーネント コードと同じ GUID を使用する際に、MsiViewModify はエラーを取得しません。 カスタム アクション ICE08 は、Component テーブルに重複するコンポーネント コード GUID が含まれていないことを検証するように設計されています。

ICE カスタム アクションは次の 4 種類のメッセージを返します:

  • エラー このメッセージは、不適切な動作を引き起こすデータベースの作成を報告します。 たとえば、コンポーネント GUID が重複すると、インストーラーによってコンポーネントが誤って登録されます。
  • 警告 このメッセージは、特定のケースで不適切な動作を引き起こすデータベースの作成を報告します。 また、データベース作成の予期しない副作用も報告できます。 たとえば、同じプロパティ名を 2 つの条件で入力すると、名前の大文字/小文字のみが異なります。 インストーラーでは大文字/小文字が区別されるため、インストーラーはこれらのプロパティを異なるプロパティとして扱います。
  • 失敗 このメッセージは、ICE カスタム アクションの失敗を報告します。 通常、ICE が実行もできない重大な問題を持つデータベースによって失敗が発生します。
  • 情報 このメッセージは、ICE からの情報を提供します。データベースに問題があることは示していません。 簡単な説明など、多くの場合は ICE 自体に関する情報です。 また、ICE の実行時に進捗状況に関する情報を提供できます。

詳細については、「内部一貫性エバリュエーターの使用」を参照してください。