[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.