Skip to main content

Components: Do's and Don'ts & Few Common ICE issues

A component with a blank Component ID is not installable or manageable via the Windows Installer APIs.
     If the Component table’s component field is left null, justification must be documented.
     There must not be more than one COM server included per component. 
     If a component contains a COM server, this must be the KeyPath for the component.
     No two components should share the same KeyPath.
     There must not be more than one file specified per component as a target for the Start menu or a Desktop shortcut.
Do not keep more than one critical file on same component as you won’t be able to keep all as key-paths, which is mandatory.
In case of multiple critical files, make separate component for each of them.
     Components should not contain multiple EXE’s, DLL’s, OCX’s, CHM’s, or HLP’s.
     Only one ODBC Data Source or INI file should be specified per component.
     Only one Shortcut should be included in a component.
     In general, all ICE errors should be fixed. Only exceptions are ICE33 and ICE36 warnings.
     If ICE errors can’t be fixed they have to be documented


Troubleshooting Tips: check the KEY PATH of each affected component, when the application is not running, as it is the KEY PATHS of every component that are checked during application startup, and any missing KEY PATHS trigger the repair of the entire feature which holds the component.
Typical causes are components that are hard coded to install to a specific user profile, instead of installing by reference to the current user's profile. Since users do not usually have access to other user's profiles, such self healing operations will fail each time, and therefore will continue to happen at every future application startup.


Component Table:
KeyPath: The KeyPath is a reference to a file or registry key which is used to detect if the component is already installed. This becomes important when you repair or uninstall a component. To find out if the component is already installed MSI checks if the registry key or file referenced by the KeyPath property does exist.
Directory:
This is the directory where the component will install. This field is not editable.

Comments