The Tables Tab in Setup Editor lists every table in the MSI database. We can edit existing table data, add new data and add new tables.
There are 79 native tables defined in an MSI database. The tables can be grouped into 10 related groups. Some tables will fall into more than one group so as to provide a link between groups.
To create an installation database we need to populate the tables with relevant information pertaining to the application and the installation process.
What is the Installation Database?
The Installation Database is a set of relational tables that are linked together through the data in various primary and foreign keys.
The database tables reflect the general layout of the application including the features that will be available on it, the components contained in its make-up, the relationship between these features and components, the necessary files and registry settings and the sequence table where these actions/events are ordered.
The tables in the MSI database can be considered to fall into 10 related groups. The following table illustrates these groups and gives a brief description of what each group does:
Core Tables Group
Core Tables Group consists of tables describing the fundamental features and components of the application and installer package.
- The Feature Table lists all features belonging to the application.
- The Condition Table contains the conditional expressions that determine whether or not a particular feature will be installed.
- Feature Components Table describes which components belong to which feature.
- The Component Table lists all the components belonging to the Installation.
- The Directory Table lists the directories that are needed during the installation. Because each component can have one and only one directory associated with it, the components table is closely related to this table and has an external key to the directory table.
- The Publish Components table lists the features and components that are published for use by other applications
Core Tables Group
Entity Relationship Diagram Legend
A black circle leading to an open diamond indicates a one-to-many relationship between the primary key of the first table and the foreign key (FK) of the second table
Files Tables Group
Files Tables Group contains all of the files belonging to the Installation. This group contains all of the tables related to files.
- The File Table lists files belonging to the installation. Because every file belongs to a component, the file table has an external key into the component table.
- The Remove File Table contains a list of files to be removed by the Remove Files action.
- The Font Table lists font files to be registered with the system.
- The Self Reg Table lists module files of the installation that are self-registered.
- The Media Table lists the source media and disks belonging to the installation.
- The Bind Image Table lists files that are bound to DLL's imported by executables.
- The Move File Table specifies which files are moved during the installation.
- The Duplicate File Table specifies which files are duplicated during the installation.
- The INIfile Table contains the INI files that are used by the application along with the information that the application needs to set in the file.
- The Remove INIfile Table holds the information an application needs to delete from an INI file
- The Icon Table provides icon information that is copied to a file as part of product advertisement.
File Tables Group
Locator Tables Group
Locator Tables Group is used to locate files in applications. In order to search for a file we must determine the file signature and then locate the file. The Locator Tables search the registry, directory tree, Installer configuration data or INI files for the unique signature of a file. (Refer to the section on the AppSearch for more details. Basically locates files by searching the registry, directory etc for a unique signature attached to the file). In order for the locator to know that we are seeking the right file and not another with the same name the File Signature is checked in the Signature table.
- RegLocator Table searches the registry for the specific File.
- INILocator contains data needed to search for an INI file.
- CompLocator Table has the necessary information contained in it that enables it to search for a file or directory using the installer's configuration data.
- DrLocator Table contains the information needed to search for a file or directory in the directory tree.
- AppSearch Table holds the properties that must be set to the search result or a corresponding file signature. More details in section on the AppSearch.
- CCPSearch Table Has a list of file signatures of which at least one will be required to be present on a user's machine for the compliance checking program (CCP)
Registry Tables Group
As mentioned previously, this group of tables is concerned with the registry and in particular with the registry entries. It is important to note that the installer has specific tables for the different types of registry entries.
We should always try to minimize the number of entries put into the registry table and instead use other more specific registry tables. Why (you might ask)? This is because the installer can have difficulty distinguishing between different types of registry entries in the registry table and it will be easier for it to identify them in more specific tables.
Some of the following tables are contained in the Registry Tables Group
- Typelib Table Provides the information required by the installer for the registration of type libraries.
- Class Table Registers Class ID's and other information for COM objects.
- ProgId Table Associates Program Id's with Class Id's.
- The Registry Table Holds the information that the application needs to put into the system registry. Things like default settings, user data or COM settings.
- Remove Registry Table Holds the information the application will need as to know what to delete from the system registry at the time of Installation
- SelfRegTable Provides information needed to self-register modules. Self-registration offers backward compatibility but is not recommended as a method for populating the registry.
- Environment Table is used to set the values of environment variables, and in Windows NT/Windows 2000 the Environment table writes to the registry as well.
Registry Tables Group
The Systems Tables Group
The Systems Tables Group tracks the tables and columns of the installation database and contains the following tables.
- The _ Tables Table tracks all the tables in the database. It also tracks tables you may have created for your own custom actions.
- The _ Column Table tracks columns in the Installation database.
- The _ Stream Table lists embedded OLE data streams.
- The _ Storage Table lists embedded OLE data storages.
- The _Validation Table tracks the types and ranges that are allowed in every column in the database. This table is mainly used for validation purposes and ensures that all columns are accounted for and have correct values. This table is not shipped with the installer database.