Blog
MSI Installation Procedure Tables
- April 13, 2022
- Posted by: Laraonline2020
- Category: End User Computing

MSI Installation Procedure Tables group includes tables that control the sequence of actions during an installation. This group includes following tables:
The InstallUISequence Table: (MSI Installation Procedure Tables)
What is an InstallUISequence table?
The InstallUISequence table lists actions that are executed when the top-level INSTALL action is executed and the internal user interface level is set to full UI or reduced UI. The installer skips the actions in this table if the user interface level is set to basic UI or no UI. This table has following columns:

Action:
This is the name of the action to execute. It can be a built-in action, a custom action, or the name of a dialog box from the Dialog table.
Condition:
If present, this condition is evaluated before the action is executed. If it evaluates to False, the action is skipped.
Sequence:
The actions are run in increasing sequence order. There are exceptions to this rule. Below table lists the special numbers we can use in this column.
Value | Meaning |
Positive number | Run the action in this sequence. |
0 OR NULL | Don’t run this action. Run this action when an installation is successfully completed. |
-2 | Run this action when the user cancels during an installation. |
-3 | Run this action in case of a fatal error. |
-4 | Run this action when the installation is suspended. |
Other Negative Values | Don’t run this action. |
The InstallExecuteSequence Table
What is an InstallExecuteSequence table?
The InstallExecuteSequence table has the same structure as the InstallUISequence table. The actions in this table are executed when the top-level INSTALL action is executed and the Installer is done processing the actions in the InstallUISequence table. If the user interface level is set to basic UI or no UI, then this table is the only one that is executed.

The AdminUISequence Table
What is an AdminUISequence table?
The AdminUISequence table has the same structure as the InstallUISequence table. The actions in this table are executed when the top-level ADMIN action is executed and the user interface level is set to the full UI or reduced UI. If the user interface level is set to basic UI or no UI, the actions in this table are skipped.

The AdminExecuteSequence Table
What is an AdminExecuteSequence Table?
The AdminExecuteSequence table has the same structure as the InstallUISequence table. The actions in this table are executed when the top-level ADMIN action is executed and the Installer is done processing the actions in the AdminUISequence table. If the user interface level is set to basic UI or no UI, then this table is the only one that is executed.

The AdvtUISequence Table
What is an AdvtUISequence Table?
The AdvtUISequence table has the same structure as the InstallUISequence table. The actions in this table are executed when the top-level ADVERTISE action is executed and the user interface level is set to the full UI or reduced UI. If the user interface level is set to basic UI or no UI, the actions in this table are skipped.
The AdvtExeuteSequence Table
What is an AdvtExeuteSequence Table?
The AdvtExecuteSequence table has the same structure as the InstallUISequence table. The actions in this table are executed when the top-level ADVERTISE action is executed and the Installer is done processing the actions in the AdvtUISequence table. If the user interface level is set to basic UI or no UI, then this table is the only one that is executed.

The CustomAction Table
What is a CustomAction Table?
The CustomAction table includes the basic information necessary to enable the Installer to run custom actions. The CustomAction table provides the means of integrating custom code and data into the installation. The source of the code that is executed can be a stream contained within the database, a recently installed file, or an existing executable file. Custom actions are bits of code that are called from external DLLs and other locations that are not part of the Installer proper. This table has following columns:

Action:
This is the name that the custom action is known as in the sequence tables.
Type:
This column indicates the custom action type and additional details about how it should be run.
Source:
The meaning of this column depends on the type of the custom action. This table contains a property name or external key into another table. For example, the Source column may contain an external key into the first column of one of the following tables containing the source of the custom action code. Tables might be Directory table, Binary Table, File Table or Property Table.
Target:
An execution parameter that depends on the basic type of custom action. For example, this field may contain the following depending on the custom action.
TARGET | CUSTOM ACTION |
Entry Point | Calling a DLL. |
Executable name with arguments | Calling an existing executable. |
Command line arguments (optional) | Calling an executable just installed. |
Target file name (required) | Creating a file from custom data. |
Null | Executing script code. |
The LaunchCondition Table:
What LaunchCondition Table?
It contains a list of conditions that all must be satisfied for the installation to begin. This table contains following two columns:

Condition:
This column holds a condition to evaluate before the installation begins.
Description:
This is an error message to be displayed to the user if the Condition evaluates to false.
The LockPermissions Table: [ MSI Installation Procedure Tables ]
What is a LockPermissions Table?
The LockPermissions table can be used to secure installed objects under Windows NT or Windows 2000. It can be used with the installation of files, registry keys, and created folders. It includes following columns:

LockObject:
This column specifies the object (file, directory, or registry key) to be secured. It is a foreign key into another table. The other table is determined by the value of the Table column.
Table:
This column and the LockObject column specify the file, directory, or registry key that is to be secured. In the Table column, enter File, Registry, or CreateFolder to specify a LockObject listed in the File Table, Registry Table, or CreateFolder Table.
Domain:
This is the name of the domain which contains the user whose permissions are to be adjusted.
User:
This is the name of the user whose permissions are to be adjusted.
Permission:
This is the Windows NT permission to be applied. This column identifies the integer description of system privileges.
Privilege | Description |
GENERIC_ALL :268435456 | Read, write, and execute access |
GENERIC_EXECUTE :536870912 | Execute access |
GENERIC_WRITE :1073741824 | Write access |
We cannot specify GENERIC_READ in the Permission column
The Upgrade Table:
What is an Upgrade table? The Upgrade table contains information that’s used when an Installer database is used to make a major upgrade to an existing product. This table contains following columns:

UpgradeCode:
The UpgradeCode property in this column specifies the upgrade code of all products that are to be detected by the FindRelatedProducts action. Unlike the ProductCode, different products may share the same UpgradeCode.
VersionMin:
This column specifies the minimum version to be upgraded. Lower boundary of the range of product versions detected by FindRelatedProducts. A null value means there is no lower bound on the version to be upgraded.
VersionMax:
This column specifies the maximum version to be upgraded. Upper boundary of the range of product versions detected by the FindRelatedProducts action. A null value means there is no upper bound on the version to be upgraded.
Language:
This column contains the set of languages detected by FindRelatedProducts that are to be upgraded and are separated by semicolons. A null value means that any language can be upgraded.
Attributes:
This column can contain any combination of the bit flags as shown in below tables:
Bit flag ( decimal) | Attribute |
1 | To enable the MigrateFeatureStates action |
2 | To detect but not change previous versions |
4 | To install the new version even if the old version can’t be removed |
256 | To include VersionMin in the versions upgraded |
512 | To include VersionMax in the version to be upgraded |
1024 | To upgrade all languages except those listed in the Language column |
Remove:
This column contains a comma-delimited set of names of existing features to be removed.
ActionProperty:
When the FindRelatedProducts action detects a related product installed on the system, it appends the product code to the property specified in this field. The property specified in this column must be a public property and the package author must add the property to the SecureCustomProperties property. Each row in the Upgrade table must have a unique ActionProperty value. After FindRelatedProducts, the value of this property is a list product codes, separated by semicolons (;), detected on the system.
Application Packaging Demo Video For Your Preview