ICE38

Windows Installer

ICE38

ICE38 validates that every component being installed under the current user's profile also specifies a registry key under the HKEY_CURRENT_USER root in the KeyPath column of the Component table.

Result

ICE38 posts an error if a component installed under the user's profile does not specify a HKCU registry key.

Example

ICE38 reports the following errors for the sample shown.

ICE38 error Description
Component Component1 installs to user profile. It must use a registry key under HKCU as its KeyPath, not a file. The value of the attributes column of Component1 is 0, meaning that the component must use a file as its KeyPath. This causes difficulties when multiple users install the component on the same computer.

To fix this error on Component1, set the RegistryKeyPath bit in the Attributes column of the Component table and change the entry in the KeyPath column to a value listed in the Registry column of the Registry table.

Component Component2 installs to user profile. It must use a registry key under HKCU as its KeyPath. The KeyPath is currently NULL. Component2 has the RegistryKeyPath bit set in the Attributes column of the Component table. The KeyPath field must therefore contain a key to the Registry column of the Registry Table but the KeyPath column is Null.

To fix this error, change the KeyPath value to a valid entry into the Registry table.

Component Component3 installs to user profile. It's KeyPath registry key must fall under HKCU. Component3 has the RegistryKeyPath bit set in the Attributes column of the Component table but the root of the registry entry specified in the Root column of the Registry table specifies HKEY_LOCAL_MACHINE rather than HKEY_CURRENT_USER.

To fix this error, use a valid registry entry under HKEY_LOCAL_MACHINE as the KeyPath for this component or change the value in the Root column of the Registry table to -1 or 1.

The KeyPath registry entry for component Component4 does not exist. Component4 has the RegistryKeyPath bit set in the Attributes column of the Component table but the entry in the KeyPath column does not exist in the Registry Table.

To fix this error, add an entry for Reg4 to the Registry table that is a under HKEY_CURRENT_USER.

The Registry Entry Reg5 is set as the KeyPath for component Component5, but that registry entry doesn't belong to Component5. The Registry entry referenced in the KeyPath column of the component was found and lies under the HKCU tree, but the registry entry's Component_ column does not refer back to the same component that listed it as the KeyPath. This means that the registry entry used as the KeyPath of the component would only be created when some other component was installed.

To fix this error change the KeyPath value to refer to a registry entry that belongs to the component, or change the registry entry to belong to the component using it as a KeyPath.

 

Directory Table (partial)

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

 


Component Table (partial)

Component Directory_ Attributes KeyPath
Component1 Dir1 0 File1
Component2 Dir2 4
Component3 Dir3 4 Reg3
Component4 Dir4 4 Reg4
Component5 Dir5 4 Reg5

 


Registry Table (partial)

Registry Root Value Component_
Reg3 2 Component3
Reg5 0 Component4

 


See Also

ICE Reference

Send comments about this topic to Microsoft

Build date: 8/13/2009

© 2009 Microsoft Corporation. All rights reserved.