Windows Installer
 
Unrestricted access to Windows Installer functionality!
 
Open Source
 
Open source!
 

<xml/>

 
Plain XML based source scripts!
 
Free
 
Free, no strings attached!
 
Build Automation
 
Command-line interface for automated application build process!
 
Community
 
Thriving community support!
Why WiX?
ICE62

What does ICE62 check?

ICE62 performs extensive checks on the IsolatedComponent table for data that may cause unexpected behavior.

IsolatedComponents table is used to specify that the installer copy the shared files (commonly shared DLLs) of an application into that application's folder rather than to a shared location. This private set of files (DLLs) are then used only by the application. Isolating the application together with its shared components in this manner has the following advantages:

  • The application always uses the versions of the shared files with which it was deployed.
  • Installing the application does not overwrite other versions of the shared files by other applications.
  • Subsequent installations of other applications using different versions of the shared files cannot overwrite the files used by this application.

Failure to fix an error reported by ICE62 can result in a failure of the isolated component system in a wide variety of ways. For example, if the shared DLL reference counter is not incremented for a shared component, the registration for the component could be removed when another application uses that ComponentId and is uninstalled.       

When does ICE62 show up?

ICE62 posts a warning or error when it finds data in the IsolatedComponent table that may produce unexpected behavior.

How can I fix ICE62?

  • If an isolated application component does not have a file key path, use a different component as the application for the isolated component. An isolated application component must provide a valid executable path to use to isolate the component.
  • If an isolated shared component is not set to increment shared DLL reference counter, update the component to increment the shared DLL counter. Not solving this problem can result in the lifetime of the component being incorrect. If another application uses this component (isolated or not) and is uninstalled, the registration for the component is removed but this application's isolated copy remains. This causes repair and uninstall problems.
  • If an isolated shared component contains a condition that may be evaluated too FALSE during the lifetime of an installation on a computer, the isolated component could be orphaned without registration information. To fix this warning, remove the condition, or author the condition so that it can never change from TRUE to FALSE.
  • If an isolated shared component is shared by two or more components that belong to different features and are installed to the same directory, install the components to different directories or check whether some of the components truly require an isolated component.
  • If a feature containing one of the application components is removed the shared component is removed as well. This causes the other feature having application components to lose the isolated component.