ICE92

ICE92 verifies that a component without a Component Id GUID is not also specified as a permanent component. This ICE custom action checks the Component Table for components without a GUID specified in the ComponentId field and verifies that the msidbComponentAttributesPermanent flag has not been set in the Attributes field. ICE92 also verifies that no component has both the msidbComponentAttributesPermanent and msidbComponentAttributesUninstallOnSupersedence attributes.

If the ComponentId column is null, the installer does not register the component and the component cannot be removed or repaired by the installer.

Result

ICE92 posts the following error.

ICE92 error Description
The Component '[1]' has no ComponentId and is marked as permanent. The entry for this component in the Component table has null in the ComponentId column and has msidbComponentAttributesPermanent in the Attributes column.

 

ICE92 posts the following warning.

ICE92 warning Description
The Component '[1]' is marked as permanent and uninstall-on-supersedence. The uninstall-on-supersedence attribute will be ignored because the component is permanent. The entry for this component in the Component table has both the msidbComponentAttributesPermanent and msidbComponentAttributesUninstallOnSupersedence attributes specified.

 

Example

ICE92 reports the following error for the example:

The Component 'Component1' has no ComponentId and is marked as permanent.

Component Table (partial)

Component ComponentId Directory_ Attributes KeyPath
Component1   DirectoryA 16 FileA

 

ICE Reference