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 在 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,这两个组件也都安装到同一目录下。 应用程序共享一个独立组件,但如果移除了一个应用程序,共享组件也会被移除,从而导致其他应用程序丢失独立组件。

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

IsolatedComponent 表

Component_Shared Component_Application
Component1 Component2
Component1 Component3

 

Component 表

组件 ComponentId Directory_ 特性 条件 KeyPath
Component1 Dir1 0 MYCONDITION 文件 1
Component2 TARGETDIR 4 Registry2
Component3 TARGETDIR 0 File3

 

FeatureComponentsTable

Feature_ Component_
Feature1 Component1
Feature2 Component2
Feature1 Component3

 

Feature 表(部分)

功能 Feature_Parent
Feature1
Feature2

 

ICE 参考