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 |