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 的父级,因此可以安装应用程序,但不能安装隔离组件,从而破坏隔离。

若要修复此错误,请将一个条目添加到 FeatureComponents 表,将 Component1 链接到安装 Component2 的功能的相同功能(或父功能)。

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 在组件表中有一个条件。 如果此条件在计算机上的安装生存期内从 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 隔离,两个组件也安装到同一目录中。 应用程序共享隔离组件,但如果删除了一个应用程序,则删除共享组件也会导致其他应用程序丢失隔离组件。

若要修复此警告,请将应用程序安装到不同的目录,或检查某些应用程序是否确实需要隔离组件。

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

 

ICE 参考