ICE38

ICE38 验证当前用户配置文件下安装的每个组件是否也在 Component 表的 KeyPath 列中的 HKEY_CURRENT_USER 根下指定了一个注册表项。

结果

如果用户配置文件下安装的组件未指定 HKCU 注册表项,则 ICE38 会发出错误。

示例

对于所示示例,ICE38 将报告以下错误。

ICE38 错误 说明
组件 Component1 安装到用户配置文件。 它必须使用 HKCU 下的注册表项(而不是某个文件)作为其 KeyPath。 Component1 的 attributes 列值为 0,这表示该组件必须使用一个文件作为其 KeyPath。 当多个用户在同一台计算机上安装该组件时,这会造成问题。 若要修复 Component1 上的此错误,请在 Component 表的 Attributes 列中设置 RegistryKeyPath 位,并将 KeyPath 列中的条目更改为 Registry 表的 Registry 列中列出的值。
组件 Component2 安装到用户配置文件。 它必须使用 HKCU 下的注册表项作为其 KeyPath。 KeyPath 当前为 NULL。 Component 表的 Attributes 列中为 Component2 设置了 RegistryKeyPath 位。 因此,KeyPath 字段必须包含 Registry 表的 Registry 列中的项,但 KeyPath 列为 Null。 若要修复此错误,请将 KeyPath 值更改为 Registry 表中的有效条目。
组件 Component3 安装到用户配置文件。 其 KeyPath 注册表项必须位于 HKCU 下。 Component 表的 Attributes 列中为 Component3 设置了 RegistryKeyPath 位,但 Registry 表的 Root 列中指定的注册表项的根指定了 HKEY_LOCAL_MACHINE 而不是 HKEY_CURRENT_USER。 若要修复此错误,请使用 HKEY_LOCAL_MACHINE 下的有效注册表项作为此组件的 KeyPath,或将 Registry 表的 Root 列中的值更改为 -1 或 1。
组件 Component4 的 KeyPath 注册表项不存在。 Component 表的 Attributes 列中为 Component4 设置了 RegistryKeyPath 位,但 KeyPath 列中的条目在 Registry 表中不存在。 若要修复此错误,请将 Reg4 的条目添加到 Registry 表中的 HKEY_CURRENT_USER 下。
注册表项 Reg5 设置为组件 Component5 的 KeyPath,但该注册表项不属于 Component5。 在组件的 KeyPath 列中引用的注册表项已找到并位于 HKCU 树中,但该注册表项的 Component_ 列未回头引用将此条目列为 KeyPath 的同一组件。 这意味着,仅当安装了其他某个组件时,才会创建用作组件的 KeyPath 的注册表项。 若要修复此错误,请更改 KeyPath 值以引用属于该组件的注册表项,或者更改注册表项,使其属于将其用作 KeyPath 的组件。

 

Directory 表(部分)

Directory Directory_Parent DefaultDir
Dir1 StartMenuFolder
Dir2 DesktopFolder
Dir3 Dir3 AppData
Dir4 Dir3 SubDir

 

Component 表(部分)

组件 Directory_ 特性 KeyPath
Component1 Dir1 0 文件 1
Component2 Dir2 4
Component3 Dir3 4 Reg3
Component4 Dir4 4 Reg4
Component5 Dir5 4 Reg5

 

注册表表(部分)

注册表 Root Component_
Reg3 2 Component3
Reg5 0 Component4

 

ICE 参考