Monday, October 09, 2006

ICE Errors

Hi All,

My this post details about what ICE errors, how to check them and how to correct them. Many of you might be facing this problem.

What are ICE Errors
ICEs - Internal Consistency Evaluators

Internal consistency evaluators, also called ICEs, are custom actions written in VBScript, JScript, or as a DLL or EXE. When these custom actions are executed, they scan the database for entries in database records that are valid when examined individually but that may cause incorrect behavior in the context of the whole database.
For example, the Component table may list several components that are all valid when tested individually with MsiViewModify. However, MsiViewModify would not catch the error when two components use the same GUID as their component code. The custom action ICE08 is designed to validate that the Component table does not contain duplicate component code GUIDs.
ICE custom actions return four kinds of messages:
Errors: Error messages report database authoring that cause incorrect behavior. For example, duplicate component GUIDs cause the installer to incorrectly register components.
Warnings Warning messages report database authoring that causes incorrect behavior in certain cases. Warnings can also report unexpected side-effects of database authoring. For example, entering the same property name in two conditions that differ only by the case of letters in the name. Because the installer is case-sensitive, the installer treats these as different properties.
Failures Failure messages report the failure of the ICE custom action. Failure is commonly caused by a database with such severe problems that the ICE cannot even run.
Informational Informational messages provide information from the ICE and do not indicate a problem with the database. Often they are information about the ICE itself, such as a brief description. They can also provide progress information as the ICE runs.
(Source: MSDN)

How to get ICE Error report

The most easy way of getting the ICE error report is by using ORCA tool.
You can download it from the net and can install it to your PC. When you right click on any MSI then you will get an option: Edit with ORCA. Once you have clicked on that, The MSI will open and you can see all the tables present in the MSI. MSI is nothing but a relational database. This will be proved to you when you see all these tables.

CAUTION: Be careful of doing any changes to these tables. Any wrong entry or modification can crash your system or your MSI.

How to Correct ICE Errors

ICE Errors are easy to remove, once you get a hands on experience on them.

Try this link below from MSDN, where you can find the description of lots of ICE Errors.

http://msdn.microsoft.com/en-us/library/aa369206(VS.85).aspx

You can directly make changes in the Tables through ORCA and can save the MSI. There is no need to again recompile the WSI then. If you recompile the WSI then you need to recheck the ICE Errors.

Point to note: The removal of ICE error is the best practise in creation of MSI. You should always remove all the ICE Errors from your package.

So all the best for ICE Errors....