ICE62
ICE62 は、予期しない動作を引き起こす可能性のあるデータについて、IsolatedComponent テーブル に対して広範なチェックを実行します。
ICE62 によって報告されたエラーを修正しないと、さまざまな方法で分離コンポーネント システムが故障する可能性があります。 たとえば、SharedDllRefCount ビットが共有コンポーネントに設定されていない場合、別のアプリケーションがその ComponentId を使用してアンインストールされたときに、コンポーネントの登録を削除できます。
結果
ICE62 は、予期しない動作が発生する可能性がある IsolatedComponent テーブル内のデータを検出すると、警告またはエラーを投稿します。
例
ICE62 は、次のエラーと警告を示す例を報告します。
The component 'Component2' is listed as an isolated application
component in the IsolatedComponent table, but the key path is not a file.
Component2 は、コンポーネント 1 を分離するためのアプリケーション コンポーネントとして一覧表示されます。 ただし、Component2 にはレジストリ キー パスがあり、コンポーネントの分離に使用する有効な実行可能パスは提供されません。
このエラーを修正するには、分離コンポーネント Component1 のアプリケーションとして別のコンポーネントを使用します。
The component 'Component1' is listed as an isolated shared component in the
IsolatedComponent table, but is not marked with the SharedDllRefCount component attribute.
Component1 は分離された共有コンポーネントとして一覧表示されますが、SharedDllRefCount ビットが設定されていません。 これにより、コンポーネントの有効期間が間違っている可能性があります。 別のアプリケーションがこのコンポーネントを使用して (分離またはアンインストールされていない) 場合、コンポーネントの登録は削除されますが、このアプリケーションの分離コピーは残ります。 これにより、修復とアンインストールの問題が発生します。
このエラーを解決するには、コンポーネントの SharedDllRefCount ビットを設定します。
The isolated shared component 'Component1' is not installed by the same feature as
(or a parent feature of) its isolated application component 'Component2' (which is installed by feature 'Feature2').
Component1 と Component2 は、さまざまな機能によってインストールされます。 Component1 は Feature1 によってインストールされ、Component2 は Feature2 によってインストールされます。 Feature1 は Feature2 の親ではないため、アプリケーションをインストールすることはできますが、分離されたコンポーネントはインストールできず、分離が中断される可能性があります。
このエラーを解決するには、Component1 をインストールする機能と同じ機能 (またはコンポーネント 2 の親機能) にリンクしている FeatureComponents テーブルにエントリを追加します。
WARNING: The isolated shared component 'Component1' (referenced in the IsolatedComponent table)
is conditionalized. Isolated shared component conditions should never change from TRUE to FALSE after the first install of the product.
Component1 には、Component テーブルに条件があります。 コンピューターへのインストールの有効期間中にこの条件が TRUE から FALSE に変わると、登録情報なしで分離されたコンポーネントが孤立する可能性があります。
この警告を修正するには、条件を削除するか、条件を作成して TRUE から FALSE に変更できないようにします。
WARNING: The isolated shared component 'Component1' is shared by multiple applications
(including 'Component2') that are installed to the directory 'TARGETDIR'.
WARNING: The isolated shared component 'Component1' is shared by multiple applications
(including 'Component3') that are installed to the directory 'TARGETDIR'.
Component1 は Component2 と Component3 の両方で分離され、2 つのコンポーネントも同じディレクトリにインストールされます。 アプリケーションは分離コンポーネントを共有しますが、1 つのアプリケーションが削除されると、共有コンポーネントも削除され、他のアプリケーションは分離されたコンポーネントを失います。
この警告を修正するには、アプリケーションを別のディレクトリにインストールするか、一部のアプリケーションで分離されたコンポーネントが本当に必要かどうかを確認します。
IsolatedComponent テーブル の
Component_Shared | Component_Application |
---|---|
Component1 | Component2 |
Component1 | Component3 |
コンポーネント | ComponentId | ディレクトリ_ | 属性 | 条件 | KeyPath |
---|---|---|---|---|---|
Component1 | Dir1 | 0 | MYCONDITION | File1 | |
Component2 | TARGETDIR | 4 | Registry2 | ||
Component3 | TARGETDIR | 0 | File3 |
FeatureComponentsTable の
特徴_ | コンポーネント_ |
---|---|
Feature1 | Component1 |
Feature2 | Component2 |
Feature1 | Component3 |
フィーチャー テーブルの (一部)
特徴 | Feature_Parent |
---|---|
Feature1 | |
Feature2 |
関連トピック