Blog
MSI User Interface Tables
- April 13, 2022
- Posted by: Pavithra
- Category: End User Computing

MSI User Interface Tables ,Like everything else about the Installer, the user interface is contained in a set of tables. Perhaps the easiest way to think about it is that the Installer stores all the properties needed to create dialogs and controls without providing any visual designer for those objects.
Dialog Table: (MSI User Interface Tables)
What is a Dialog table?
The Dialog Table contains all the dialogs that appear in the user interface (UI) in both the full and reduced modes. Dialog Table has the following columns:

Dialog:
The primary key and name of the dialog box.
HCentering:
This is the column that specifies the position of the left side of the dialog box, on a scale of 0, at the left edge of the screen, to 100, at the right edge of the screen
VCentering:
The vertical position of the dialog box. The range is 0 to 100, with 0 at the top edge of the screen and 100 at the bottom edge.
Width:
This column specifies the width of the dialog box, including the borders.
Height:
The height of the rectangular boundary of the dialog box.
Attributes:
This is a set of attributes for the dialog box. Some of the values for this column are listed in below Table.
Name | Value | Meaning |
Visible | 1 | Dialog box is visible. |
Modal | 2 | Dialog box is modal. |
Minimize | 4 | Dialog box can be minimized. |
SysModal | 8 | Dialog box is system modal. |
Title:
This is the caption to use for the dialog box.
Control_First:
This is a foreign key into the Control table, which identifies the control that receives the focus when the dialog box is first displayed.
Control_Default:
This is a foreign key into the Control table, which identifies the default control for the dialog box.
Control_Cancel:
This is a foreign key into the Control table, which identifies the cancel control for the dialog box.
The Control Table: (MSI User Interface Tables)
What is a Control table?
The Control table includes detailed information on each control on every dialog box displayed by the Installer. This table contains following columns:

Dialog_:
This column is a foreign key to the Dialog table; it indicates the dialog box where this control appears.
Control:
This column contains name of the control. This name must be unique within a dialog box but can be repeated on different dialog boxes. The Control column combined with the Dialog_ column form the primary key to this table.
Type:
This is the type of the control. This must be one of these values: Billboard, Bitmap, Checkbox, ComboBox, DirectoryCombo, DirectoryList, etc,
X:
This is the horizontal coordinate of the left edge of the control measured in Installer units.
Y:
This is the vertical coordinate of the upper edge of the control measured in Installer units.
Width:
This is the width of the control measured in Installer units.
Height:
This is the height of the control measured in Installer units.
Attributes:
This is a set of attributes for the control. Some of the values for this column are listed in below Table.
Name | Control Type | Value | Meaning |
Visible | ALL | 1 | Control is visible. |
Enabled | All | 2 | Control is enabled. |
Sunken | All | 4 | Control is displayed with a sunken visual effect. |
Indirect | All | 8 | If set, the control’s property specifies the identifier for the actual property to change. |
IntegerControl | All | 16 | Any associated property is an integer. Otherwise it is a string. |
Property:
This is the name of a property whose value is tied to this control. Radio button, list box, and combo box values are tied into a group by being linked to the same property.
Text:
This is the initial text of the control. For example that might be the caption of a Text control or the initial text displayed in an Edit control.
Control_Next:
This is the name of the next control in the tab order of this dialog box.
Help:
This is an optional string for use as help. It consists of two parts separated by a ‘|’ character. The first part is used as a tooltip for the control; the second part is used for context-sensitive help. Note that context-sensitive help is not yet supported by the Windows Installer Service as of version 1.1.
The ControlCondition Table (MSI User Interface Tables)
What is a ControlCondition Table?
The ControlCondition table allows us to make some changes to controls based on conditional logic. For example, using this table the author could choose to hide a control based on the VersionNT property. It contains following columns:

Dialog_:
This is a foreign key to the Dialog table, which indicates the dialog box that contains the control that we wish to modify.
Control_:
This is a foreign key to the Control table, which indicates the control that we wish to modify.
Action:
This column holds one of the following values:
Action | Meaning |
Default | Set the control as the default for the dialog |
Disable | Disable the control |
Enable | Enable the control |
Hide | Make the control invisible |
Show | Make the control visible |
Condition:
This column houses the condition to be evaluated. If the condition is true, the action specified in the Action column is carried out.
The ControlEvent Table: (MSI User Interface Tables)
What is a ControlEvent Table? This table specifies the events that happen when the user interacts with controls. The ControlEvent table allows the author to specify the Control Events started when a user interacts with a PushButton Control, CheckBox Control, or SelectionTree Control. This table has following columns:

Dialog_:
This is a foreign key to the Dialog table, which indicates the dialog box that contains the control that we wish to register an event for.
Control_:
This is a foreign key to the Control table, which indicates the control for which we wish to register an event.
Event:
An identifier that specifies the type of event that should take place when the user interacts with the control specified by Dialog_ and Control_.
Argument:
This column shows additional information required by the particular event. A value used as a modifier when triggering a particular event.
Condition:
A conditional statement that determines whether the installer activates the event in the Event column. The Installer evaluates this statement and only triggers the event if the statement evaluates to True. If we wish an event to take place unconditionally, enter a 1 in this column.
Ordering:
If we have several events tied to the same control, we can enter positive integers in this column to control the order of execution of the events.
The EventMapping Table: (MSI User Interface Tables)
What is an EventMapping table? The EventMapping Table lists the controls that subscribe to some control events, and lists the attribute to be changed when the event is published by another control or the Windows Installer. For example, there’s a TimeRemaining event that the Installer uses to tell the user interface how long is left in a particular installation. We should use the EventMapping table to set the controls that respond to a particular Installer event. This table contains following columns:

Dialog_:
This is a foreign key to the Dialog table, which indicates the dialog box that contains the control that we wish to subscribe to an event.
Control_:
This is a foreign key to the Control table, which indicates the control that we wish to subscribe to an event.
Event:
This is the event that we want to subscribe to.
Attribute:
This is the name of the control attribute that should be set by the event.
The TextStyle Table:
What is a TextStyle table?
The TextStyle table lists the fonts that can be used on controls. This table has following columns:

TextStyle:
This is a name for the text style.
FaceName:
This is the font name to use for this text style.
Size:
This is the size of the font to use for this text style, specified in Installer units.
Color:
This column is only used if the text style is used in a text control. All other controls use the system default text color. This value is computed by combining the red, green, and blue values with the formula (65536* blue) + (256 * green) +red.
StyleBits:
A combination of bits indicating the formatting for the text. The individual style bits have the following values.
Decimal | Style |
1 | Bold |
2 | Italic |
4 | Underline |
8 | Strikethrough |
The UIText Table: (MSI User Interface Tables)
What is a UIText table?
The UIText table contains the localized versions of some of the strings used in the user interface. These strings are not part of any other table. The UIText table is for strings that have no logical place in any other table. This table has following two columns:

Key:
This is an identifier for the string.
Text:
This is the text for the string.
The ActionText Table:
What is an ActionText Table?
The ActionText table contains the information that is displayed in the Installer progress dialog box and written to the log. It has following columns:

Action:
Name of the action
Description:
This is the description to be displayed or written to the log.
Template:
A localized format template that is used to format action data records to display during action execution.
The Billboard Table:
What is a Billboard Table? Billboards are dialogs that progress dynamically while an action is taking place. Typically they’re used to entertain the user or provide information while files are being installed. The Billboard table lists all of the billboards in the installation using following columns:

Billboard:
This is an identifier for the billboard.
Feature_:
An external key to the first column of the Feature table. The billboard is displayed only if this feature is being installed.
Action:
The name of an action. The billboard is displayed during the progress messages received from this action.
Ordering:
If there are multiple billboards for a single action, we can use positive integers in this column to specify the display order.
The BBControl Table:
What is a BBControl Table?
The BBControl table lists the controls to be displayed on billboards. This table has following columns:

Billboard_:
This column is a foreign key to the Billboard table, which indicates the billboard where this control appears.
BBControl:
Name of the control. This name must be unique within a billboard but can be repeated on different billboards. This column combined with the Billboard_ column forms the primary key to the table.
Type:
This is the type of the control. Only static controls (Text, Bitmap, Icon or static custom controls) can be placed on billboards.
X:
This is the horizontal coordinate of the left edge of the control measured in Installer units.
Y:
This is the vertical coordinate of the upper edge of the controlmeasured in Installer units.
Width:
Width of the rectangular boundary of the control.
Height:
This is the height of the control measured in Installer units.
Attributes:
This is a set of attributes for the control.
Text:
This column contains a localizable string used to set the initial text in the control if the control displays text.
The Checkbox Table:
What is a Checkbox Table?
The Checkbox table lists the values for the check boxes.

Property:
This is the name of a property set from a checkbox.
Value:
This is the value that the property is set to when the associated checkbox is checked.
The ComboBox Table:
What is a ComboBox Table?
The ComboBox table lists the text and values for the lists displayed by combo boxes. This table contains these columns:

Property:
This is the name of a property set from a combo box.
Order:
A positive integer used to determine the ordering of the items that appear in a single combo box list.
Value:
This is the value that the property is set to when this item is selected from the combo box.
Text:
This is the text to display in the combo box. If this column contains a null, then the Value is used as the display text.
The ListBox Table
What is a ListBox Table?
The lines of a list box are not treated as individual controls, but they are part of a list box that functions as a control. The ListBox table defines the values for all list boxes. This table includes the following columns:

Property:
This is the name of a property set from a list box.
Order:
The items in a list box are ordered according to the values in this column. All items with the same value in the Property column are shown in the same list box.
Value:
The value string associated with this item. This is the value that the property is set to when this item
is selected from the list box.
Text:
This is the text to display in the list box.
The ListView Table:
What is a ListView Table?
The ListView table lists the text and values for the lists displayed by listview controls. This table contains these columns:

Property:
This is the name of a property set from a listview.
Order:
The items in a listview are ordered according to the values in this column. All items with the same value in the Property column are shown in the same listview.
Value:
The value string associated with this item. Selecting the line sets the associated property to this value.
Text:
This is the text to display in the listview. If this column contains a null, then the Value is used as the display text.
Binary_:
This column contains a foreign key to the Binary table. It’s used to specify an icon to display with the item in the listview.
The RadioButton Table:
What is a RadioButton Table?
The RadioButton table contains information for radio buttons displayed in option groups. This table contains these columns:

Property:
This column contains the name of a property set from a RadioButton group box.
Order:
This column displays an ordering for the buttons within a group box. All of the buttons with the same Property value are displayed in the same RadioButton group box.
Value:
The value string associated with this button.
X
The horizontal coordinate within the group of the upper-left corner of the bounding rectangle of the radio button.
Y
The vertical coordinate within the group of the upper-left corner of the bounding rectangle of the radio button.
Width
This column signifies the width of the button. This must be a non-negative number.
Height:
This column signifies the height of the button.
Text:
This is the text to display with the Radio button. If the button displays a picture, this column is a foreign key to the Binary table.
Help:
This is an optional string for use as help. It consists of two parts separated by a | character. The first part is used as a tooltip for the control; the second part is used for context-sensitive help. Note that the Installer Service does not yet support context-sensitive help.
Application Packaging Demo Video For Your Preview