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 は、component1 の分離のためのアプリケーション コンポーネントとして示されます。 ただし、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 の親ではありません。そのため、アプリケーションをインストールすることはできますが、分離されたコンポーネントはインストールできず、分離が解除される可能性があります。

このエラーを修正するには、Component2 をインストールする機能と同じ機能 (または親の機能) に Component1 をリンクするエントリを 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 つのコンポーネントも同じディレクトリにインストールされます。 アプリケーションは分離されたコンポーネントを共有しますが、あるアプリケーションが削除されると、共有コンポーネントも削除され、他のアプリケーションでは分離されたコンポーネントが失われます。

この警告を修正するには、アプリケーションを別のディレクトリにインストールするか、一部のアプリケーションで本当に分離されたコンポーネントが必要かどうかをチェックします。

IsolatedComponent テーブル

Component_Shared Component_Application
Component1 Component2
Component1 Component3

 

Component テーブル

コンポーネント ComponentId Directory_ 属性 条件 KeyPath
Component1 Dir1 0 MYCONDITION File1
Component2 TARGETDIR 4 Registry2
Component3 TARGETDIR 0 File3

 

FeatureComponents テーブル

Feature_ Component_
Feature1 Component1
Feature2 Component2
Feature1 Component3

 

Feature テーブル (一部)

機能 Feature_Parent
Feature1
Feature2

 

ICE リファレンス