\Windows Installer FAQ (the basics)Database Tables
Windows Installer Basics: Database Tables |
A Windows Installer database is based on SQL tables, rows and columns
which drive the installation activity.
All tables have one or more columns as a primary key.
Both table and column/field names are case sensitive, and if a column
name ends with "_" such as "Feature_" then
that column is a foreign key into another table
(the "Feature" table in this case).
The MAKEMSI "TableDefinition" command is used to define
all tables MAKEMSI manipulates (column attributes etc) and the
"Table" and "Row" commands are used to
update existing rows or add new ones to the tables.
By default if you duplicate a primary key when adding a row it will overwrite
the existing one but you can alter this behavior to abort, you have a fair bit
of control over how rows are added and what validation is performed.
These are the most fundamental MAKEMSI commands and all others use them
to update the msi.
It is possible to make temporary "install time" alterations to the msi,
see the "Dynamically Update Dialog Controls" section for an example.
One of the easiest ways to examine the contents is with the
"ORCA" tool, the following is an example which shows some of the contents
of one of the tables:
Some other handy tools are:
This list is unlikely to be complete so please check out the
Windows Installer SDK - documentation.
The tables:
- ActionText -
Lists text in a progress dialog box or action log.
- AdminExecuteSequence -
Lists ADMIN actions in sequence.
- AdminUISequence -
Lists UI ADMIN actions in sequence.
- AdvtExecuteSequence -
Lists ADVERTISE actions in sequence.
- AdvtUISequence -
The Windows Installer does not use this table.
The AdvtUIsequence table should not exist in the installation
database or it should be left empty.
- AppSearch -
Lists properties used to search by file signature.
- BBControl -
Lists controls displayed on each billboard.
- Billboard -
Lists billboards displayed in full UI.
- Binary -
Holds binary data for bitmaps and icons.
- BindImage -
Lists executables bound to the DLLs.
- CCPSearch -
Lists file signatures for the Compliance Checking Program.
- CheckBox -
Lists the values for the check boxes.
- Class -
Lists COM server information for product advertisement.
- ComboBox -
Lists the values for each combo box.
- CompLocator -
Find file or directory by installer configuration data.
- Complus -
Contains information needed to install COM+ applications.
- Component -
Lists installation components.
- Condition -
Modifies feature selection states conditionally.
- Control -
Lists the controls on each dialog box.
- ControlCondition -
Lists actions applied to controls based on a property.
- ControlEvent -
Specifies the actions of controls in dialog boxes.
- CreateFolder -
Lists folders that must be created for a component.
- CustomAction -
Integrates custom actions into the installation.
- Dialog -
Lists dialog boxes in the user interface.
- Directory -
Directory layout for the application.
- DrLocator -
Lists file searches using the directory tree.
- DuplicateFile -
Lists files to be duplicated.
- Environment -
Lists the environment variables.
- Error -
Lists error message formatting templates.
- EventMapping -
Lists the events subscribed to by controls.
- Extension -
Lists file extension server information.
- Feature -
Defines the logical tree structure of features.
- FeatureComponents -
Defines features and component relationships.
- File -
Complete list of source files with their attributes.
- FileSFPCatalog -
Associates specified files with the catalog files used
by Windows File Protection.
- Font -
Registry information for font files.
- Icon -
Contains the icon files.
- IniFile -
Information needed to set in an .ini file.
- IniLocator -
Searches for file or directory using an .ini file.
- InstallExecuteSequence -
Lists INSTALL actions in sequence.
- InstallUISequence -
Lists UI INSTALL actions in sequence.
- IsolatedComponent -
Lists Isolated Components.
- LaunchCondition -
Lists conditions for the installation to begin.
- ListBox -
Lists the values for all list boxes.
- ListView -
Lists the values for all listviews.
- LockPermissions -
Defines locked-down portions of the application.
- Media -
Lists source media disks for the installation.
- MIME -
Lists MIME content type, file extension, or CLSID.
- MoveFile -
Lists files to be moved or copied.
- MsiAssembly -
Specifies Windows Installer settings for Microsoft .NET Framework assemblies and Win32 assemblies.
- MsiAssemblyName -
Specifies the schema for the elements of a strong assembly cache name for a .NET Framework or Win32 assembly.
- MsiDigitalCertificate -
Stores certificates in binary stream format and associates each certificate with a primary key. Available with Windows Installer 2.0 and later.
- MsiDigitalSignature -
Contains the signature information for every digitally-signed object in the installation database. Available with Windows Installer 2.0 and later.
- MsiFileHash -
Stores a 128-bit hash of source files provided by the Windows Installer package.
- MsiPatchCertificate -
Contains the information needed to enable Least Privileged User Account (LUA) patching. Available beginning with Windows Installer 3.0.
- MsiPatchHeaders -
Holds the binary patch header streams used for patch validation. Available beginning with Windows Installer 2.0.
- MsiPatchMetadata -
Holds information about a Windows Installer patch required to remove the patch and used by Add/Remove Programs. Available beginning with Windows Installer 3.0.
- MsiPatchOldAssemblyName -
Specifies the old name for an assembly. Available beginning with Windows Installer 2.0.
- MsiPatchOldAssemblyFile -
Relates a file in the File Table to an assembly name. Available beginning with Windows Installer 2.0.
- MsiPatchSequence -
Contains the information required to determine the sequence of application of a small update patch relative to all other patches. Available beginning with Windows Installer 3.0.
- MsiSFCBypass -
Lists files that should bypass Windows File Protection on Windows Millennium Edition
- ODBCAttribute -
Lists attributes of ODBC drivers and translators.
- ODBCDataSource -
Lists data sources belonging to the installation.
- ODBCDriver -
Lists ODBC drivers belonging to the installation.
- ODBCSourceAttribute -
Lists the attributes of data sources.
- ODBCTranslator -
Lists ODBC translators of the installation.
- Patch -
Lists files that are to receive a particular patch.
- PatchPackage -
Lists all patch packages applied to this product.
- ProgId -
Lists information for program IDs.
- Property -
Lists property names and values for all properties.
- PublishComponent -
Lists information used for component publishing.
- RadioButton -
Lists buttons for all the radio button groups.
- Registry -
Lists registry information for the application.
- RegLocator -
Searches for file or directory using the registry.
- RemoveFile -
Lists files to be removed by RemoveFiles action.
- RemoveIniFile -
Lists information needed to delete from an .ini file.
- RemoveRegistry -
Lists information needed to delete from system registry.
- ReserveCost -
Reserves disk space in any directory conditionally.
- SelfReg -
Lists information about self-registered modules.
- ServiceControl -
Controls installed or uninstalled services.
- ServiceInstall -
Lists information used to install a service.
- SFPCatalog -
Lists catalogs used by Windows Me for Windows File Protection on Windows Millennium Edition.
- Shortcut -
Lists information needed to create shortcuts.
- Signature -
Lists the unique file signatures that identify files.
- TextStyle -
Lists text styles used in the text controls.
- TypeLib -
Lists registry information for type libraries.
- UIText -
Lists localized versions of some strings used in the user interface.
- Verb -
Lists command-verb information for file extensions.
- _Validation -
Lists column names and values for all tables.
- _Columns -
Read-only column catalog.
- _Streams -
Lists embedded OLE data streams.
- _Storages -
Lists embedded OLE sub-storages.
- _Tables -
Read-only system table listing all the tables.
- _TransformView -
Table A read-only temporary table used to view transforms.
- Upgrade -
Lists information used in an upgrade of an application.