Using a Sequence Table

[This is preliminary documentation and subject to change.]

The authoring of the sequence tables is an essential part of developing an installer package because these tables specify the flow of the installation process. Sequence tables are the only place in an installer package where the flow can be specified. The flow is always linear and there can be no branching or looping.

There are six sequence tables in the installer database:

Upon the execution of one of the top-level actions, INSTALL, ADVERTISE, and ADMIN, the installer begins advancing through the sequence of actions listed in one of the user interface, execution, or advertise sequence tables. The installer contains internal logic that determines which of the sequence tables to use.

Action Condition Sequence
LaunchConditions 10
AppSearch 30
CCPSearch CCP_TEST 40
CCPDialog NOT_CCP_SUCCESS 50
MyCustomConfig NOT Installed 80
CostInitialize 90
FileCost 100
CostFinalize 110
InstallDialog NOT Installed 120
MaintenanceDialog Installed AND NOT Resume 130
ActionDialog 150
RegisterProduct 170
InstallValidate 210
InstallFiles 330
MyCustomAction $MyComponent > 2 440
InstallFinalize 510

The sequence tables have three columns: Action, Condition, and Sequence. The Action column names the standard or custom action, or user interface wizard, the installer will execute. The Sequence column indicates the place of the record in the sequence and each record in the sequence table is sampled in order. The Condition column is a logical expression that causes the action to be executed if the expression is True and skipped if the expression is False. Conditions can be thought of as jumps and so the linear flow may not execute every action.

The following actions in this sequence table are defined by the installer and are therefore examples of standard actions.

LaunchConditions
AppSearch
CCPSearch
CostInitialize
FileCost
CostFinalize
RegisterProduct
InstallFiles
InstallFinalize

The following actions were defined by the table's author and are therefore examples of custom actions and must be listed in the CustomAction table.

MyCustomConfig
MyCustomAction

The remaining entries in the Action field are dialogs. They therefore must be entries into the Dialog table.

CCPDialog
InstallDialog
MaintenanceDialog
ActionDialog

The Condition column causes the installer to skip the action if the property or expression in this field is False. The Installed property and the Resume property are example of properties that are set by the installer. The Installed property is set to true if the product is already installed and the Resume property is set if resuming a suspended installation. The CCP_TEST and the NOT_CCP_SUCCESS properties are examples of properties that can be set at the command line by the user installing the application.

All actions will therefore run in sequence with the following conditional steps.

For more examples of properties see Using Properties and for more information on how expressions are evaluated see MsiEvaluateCondition.