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.
ICE92 posts the following error.
|The Component '' 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.
|The Component '' 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.|
ICE92 reports the following error for the example:
The Component 'Component1' has no ComponentId and is marked as permanent.
Component Table (partial)
Build date: 11/30/2012