ICE02
ICE02 では、Component テーブル、File テーブル、Registry テーブル間の特定の参照が相互に補完していることを検証します。 それらの参照は、コンポーネントのインストール状態をインストーラーで正しく判断するために、相補的である必要があります。
インストーラーでは、Component テーブルの KeyPath 列を利用し、Component 列に掲載されているコンポーネントの存在を検出します。 KeyPath 列には、Registry テーブルまたは File テーブルの鍵が含まれています。 いずれのテーブルにも Component_ 列がありますが、その列には、レジストリ エントリまたはファイルを制御するコンポーネントを指す Component テーブルの鍵が入っています。 それらの参照は相補的になっている必要があります。
結果
ICE02 では、相補的になっている必要があるのにそうではない参照が検出されると、エラー メッセージが投稿されます。
例
ICE02 では、表示されたデータベース エントリが含まれる .msi ファイルの次のエラー メッセージが投稿されます。
File: 'Red_File' cannot be the key file for Component: 'Blue'. The file belongs to Component: 'Red'
Component テーブル (部分)
コンポーネント | KeyPath |
---|---|
[赤] | Red_File |
青 | Red_File |
File テーブル (一部分)
File 列 | Component_ |
---|---|
Red_File | [赤] |
Blue_File | 青 |
コンポーネント Blue は Red_File を参照するが、Red_File はコンポーネント Blue で制御されず、KeyPath ファイルになることはありません。 Blue のインストール状態を取得する目的でインストーラーが呼び出された場合、Red_File がインストールされたかどうかが間違って確認されることがあります。 Component テーブルで Blue の KeyPath フィールドを Blue_File に変更するとエラーが修正されます。
関連トピック