What does ICE12 check?ICE12 checks the following items in your MSI database:
CostFinalize action occurs in any sequence table containing “Set Directory” (Type 35) or “Set Property” (Type 51) custom actions.
Every “Set Directory” (Type 35) custom action comes after the CostFinalize action in the sequence tables.
Every “Set Property” (Type 51) custom action that has a foreign key to the Directory table in the Source column of the CustomAction table comes before the CostFinalize action in the sequence tables.
ICE12 queries the CustomAction, Directory, AdminExecuteSequence, AdminUISequence, AdvtExecuteSequence, InstallExecuteSequence, and InstallUISequence tables for validation.
Note: ICE12 does not validate the formatted text in the Target column of the CustomAction table.
When does ICE12 show up?ICE12 posts an error message if validation of the custom actions that set a directory property fails.
How can I fix ICE12?Since ICE12 checks more than one thing, you will need to fix your MSI based on the specific error message returned from ICE12. You may need to do one of the following to fix ICE12:
Change the custom action entry in the Source column of CustomAction table to an existing entry in the Directory table or add the new directory to the Directory table.
Change the custom action location in the InstallExecuteSequence table such that it comes after the CostFinalize action.
Change the custom action location in the InstallExecuteSequence table such that it comes before the CostFinalize action.