ICE02 validates that certain references between the Component, File, and Registry tables are reciprocal. These references must to be reciprocal for the installer to correctly determine the installation state of components.
The installer uses the KeyPath column of the Component table to detect the presence of the component listed in the Component column. The KeyPath column contains a key into the Registry or File tables. Both of these tables have a Component_ column that contains a key back into the Component table pointing to the component that controls the registry entry or file. These references must be reciprocal.
ICE02 posts an error message if it finds a reference that should be reciprocal and is not.
ICE02 would post the following error message for a .msi file containing the database entries shown.
File: 'Red_File' cannot be the key file for Component: 'Blue'. The file belongs to Component: 'Red'
Component Table (partial)
File Table (partial)
Component Blue references Red_File, but Red_File is not controlled by Component Blue and therefore cannot be the KeyPath file. If the installer were called to get the installation state of Blue it would incorrectly check whether Red_File was installed. Changing the KeyPath field for Blue in the Component Table to Blue_File fixes the error.