Friday, 3 August 2012
Action ICEs - MSI Validation
ICE12 is used to validate that type 35 and type 51 custom actions are properly positioned with respect to the CostFinalize action in any sequence tables. Type 35 custom actions must come after the CostFinalize action, and type 51 custom actions must come before the CostFinalize action.
ICE13 checks for dialogs in the Execute Sequence tables. Dialogs can only
appear in the UI Sequence tables.
ICE26 checks the Sequence tables to make sure that all of the required actions are present. It also makes sure that no Sequence table contains an action that is disallowed for that table.
ICE27 verifies that every entry in every Sequence table is either a standard
action, a custom action, or a Dialog name. It also checks the organization of each Sequence table to be sure that actions are being performed in the proper order.
ICE28 looks at ForceReboot actions, and makes sure that they are not being
called in inappropriate places.
ICE63 checks the sequencing of the RemoveExistingProducts action. This action may be placed in several spots in the Sequence tables, but there are other spots where it is invalid.
ICE68 checks the Type column in the CustomAction table. Only some numbers
are valid custom action types. For example, a value of 82 in this column (which is not a valid custom action type) would generate an error from this ICE.
ICE72 checks the AdvtExecuteSequence table to make sure than any custom
actions it contains are type 19, 35, or 51. If this table contains other types of custom actions, advertisement may fail.