ICE38

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

结果

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

ICE38 报告所示示例的以下错误。

ICE38 错误 描述
组件 Component1 安装到用户配置文件。 它必须使用 HKCU 下的注册表项作为其 KeyPath,而不是文件。 Component1 的属性列的值为 0,这意味着该组件必须使用文件作为其 KeyPath。 当多个用户在同一计算机上安装组件时,这会导致困难。 若要修复 Component1 上的此错误,请将 组件表的属性列中的 RegistryKeyPath 位,并将 KeyPath 列中的项更改为 注册表表的注册表列中中列出的值。
组件 Component2 安装到用户配置文件。 它必须使用 HKCU 下的注册表项作为其 KeyPath。 KeyPath 当前为 NULL。 Component2 在 组件表的属性列中设置了 RegistryKeyPath 位。 因此,KeyPath 字段必须包含 注册表表 的注册表列的键,但 KeyPath 列为 Null。 若要修复此错误,请将 KeyPath 值更改为注册表表中的有效条目。
组件 Component3 安装到用户配置文件。 它是 KeyPath 注册表项必须属于 HKCU。 Component3 在 组件表的属性列中设置了 RegistryKeyPath 位,但在注册表表的根列中指定的注册表项的根目录指定 HKEY_LOCAL_MACHINE 而不是 HKEY_CURRENT_USER。 若要修复此错误,请使用 HKEY_LOCAL_MACHINE 下的有效注册表项作为此组件的 KeyPath,或者将 注册表表的根列中的值更改为 -1 或 1。
组件 Component4 的 KeyPath 注册表项不存在。 Component4 在 组件表的属性列中设置了 RegistryKeyPath 位,但 注册表表中不存在 KeyPath 列中的项。 若要修复此错误,请将 Reg4 的条目添加到注册表表中,该条目位于 HKEY_CURRENT_USER下。
注册表项 Reg5 设置为 Component5 的 KeyPath,但该注册表项不属于 Component5。 在组件的 KeyPath 列中引用的注册表项位于 HKCU 树下,但注册表项的Component_列不会引用其列为 KeyPath 的同一组件。 这意味着,仅当安装了其他组件时,才会创建用作组件的 KeyPath 的注册表项。 若要修复此错误,请更改 KeyPath 值以引用属于组件的注册表项,或更改注册表项以将其用作 KeyPath 的组件。

 

目录表(部分)

目录 Directory_Parent DefaultDir
Dir1 StartMenuFolder
Dir2 DesktopFolder
Dir3 Dir3 AppData
Dir4 Dir3 SubDir

 

组件表(部分)

元件 目录_ 属性 KeyPath
Component1 Dir1 0 File1
Component2 Dir2 4
Component3 Dir3 4 Reg3
Component4 Dir4 4 Reg4
Component5 Dir5 4 Reg5

 

注册表表(部分)

注册表 价值 元件_
Reg3 2 Component3
Reg5 0 Component4

 

ICE 参考