Category Archives: msi tables

MsiLockPermissionsEx Table

MsiLockPermissionsEx Table enhances the functionality over LockPermissions Table. With MsiLockPermissionsEx table, users now have the ability to set access permissions on objects impacted by the application install that previously required using custom actions or other methods outside of Windows Installer
·Expanding the set of permissions that can be applied to a resource by incorporating the Security Descriptor Definition Language(SDDL) in Windows Installer. This allows the security settings for an object to be more flexible, including;
o Ability to apply Deny ACLs to objects
o Indicate inheritance properties for permissions
o Expand the set of well-known SIDs
o Ability to set Owner, Group, and SACLs to the objects in addition to the regular access permissions
·Security settings can be applied to services as well in addition to Files, Folders, Registry keys
·Ability to apply permissions specific to user accounts – including accounts that are newly created on the system during the course of installation
Read more about this in Windows installer team blog

MSI -Installation Procedure Tables Group

The tables in the Installation Procedure group control tasks performed during the installation by standard actions and custom actions.

Some of the tables in this group control a high level action by providing a sequence of actions. Each of the following sequence tables controls a portion of a high level action.

  • The InstallUISequence table
  • The InstallExecuteSequence table
  • The AdminUISequence table
  • The AdminExecuteSequence table
  • The AdvtUISequence table
  • The AdvtExecuteSequence table 

MSI – Locator Tables Group

The Locator Tables group is used to locate files and applications. To search for a file, first determine the file signature and then locate the file. The Locator tables are used to search the registry, installer configuration data, directory tree, or .ini files for the unique signature of a file. The file signature can then be checked in the Signature table to ascertain that a particular file is really the file being sought and not another file with the same name. If a record in a locator table does not contain a key into the Signature table, then the record refers to a directory and not a file.

The component controlling a file is found in the File table through the external key to the Component table. The installer resolves the location of a file through the Component table because every file belongs to one component. The location of a component is found through an external key in the Component table to the Directory table.

The location of an application is found by searching for files that make up the application. The installer also provides two tables for searching for previous versions of an application: the AppSearch table and the CCPSearch table.

The following tables make up the Locator tables group and are used to determine the file signature.

  • The RegLocator table holds the information needed to search for a file or directory in the registry.
  • The IniLocator table holds the information needed to search for a .ini file. The .ini file must be present in the default Microsoft® Windows® directory.
  • The CompLocator table holds the information needed to search for a file or a directory using the installer’s configuration data.
  • The DrLocator table holds the information needed to search for a file or directory in the directory tree.
  • The AppSearch table contains the properties that must be set to the search result of a corresponding file signature.
  • The CCPSearch table contains the list of file signatures, at least one of which needs to be present on a user’s computer for the Compliance Checking Program (CCP).

MSI – Program Information Tables Group

The Program Information Tables group contain important information that used throughout the installation.

  • The Property table provides a means to specify all of the properties of an installation.
  • The Binary table holds the binary data for items such as bitmaps, animations, and icons. The binary table is also used to store data for custom actions. This table can contain a bitmap for a billboard, the icon for your program, or the executable form of a custom action.
  • The Error table is used to look up error message formatting templates when processing errors with an error code set. This is for the usual case where there is no formatting template set. The installer has its own error processing mechanism. Errors are passed as records.
  • Shortcut table the shortcut table holds the information the application needs to create Shortcuts on the user’s computer.
  • The ReserveCost table contains the disk space necessary for each component to work properly. 

MSI – System Tables Group

The tables of the system tables group track the tables and columns of the installation database.

  • The _Tables table tracks all the tables in the database. This includes tables that you may have created for your own custom actions. Query this table to find out if a table exists.
  • The _Columns table tracks columns in the installation database. Temporary columns are currently not tracked by this table. Query this table to find out if a given column exists.
  • The _Streams table lists embedded OLE data streams.
  • The _Storages table lists embedded OLE data storages.
  • The _Validation table. The _Validation table tracks the types and allowed ranges of every column in the database. The _Validation table is used during the database validation process to ensure that all columns are accounted for and have the correct values. This table is not shipped with the installer database. 

MSI – Registry Tables Group

The installer has specific tables for the different types of registry entries. When populating the registry tables group it is important to try to minimize the number of entries put into the Registry table and maximize the use of the other, specific, registry tables. This is because the installer cannot distinguish between different types of registry entries in the Registry table and cannot use the internal logic necessary to take full advantage of all of the installer features, such as advertising. Authoring COM and shell-related registry entries in this way also provides a more logical organization and can help minimize erroneous registration of COM server information.

The registry entry group contains the following tables of specific registry entries.

  • The Extension table contains all of the filename extensions your application uses along with their associated features and components.
  • The Verb table associates command-verb information with the file extensions listed in the Extension table. This provides an indirect link between the Verb and Feature table that is needed for feature advertisement.
  • The TypeLib table provides information that the installer places in the registry for the registration of type libraries. Type library entries are not written at the time of advertisement. The installer writes the type library entries at the time the components associated with the library are installed.
  • The MIME table associates a MIME context type with a CLSID or a file extension. This provides a path between the MIME and Feature Table that is needed for feature advertisement.
  • The SelfReg table provides information needed to self-register modules. Self-registration is provided by the installer only for backward compatibility and it is not recommended as a method for populating the registry, however if there are any modules in your application that must register themselves, use the SelfReg table.
  • The Class table is used to register Class IDs and other information for COM objects. This table contains COM server-related information that must be generated as a part of the product advertisement.
  • The ProgId table associates program IDs with class IDs.
  • The AppId table is used to register common security and configuration settings for DCOM objects.
  • The Environment table is used to set the values of environment variables, and in Windows NT/Windows 2000 the Environment table writes to registry as well.
  • The Registry table holds any other information that the application needs to put into the system registry. This would include default settings, user information or data, or COM registration not supported by the above tables.
  • The RemoveRegistry table contains the registry information the application needs to delete from the system registry at installation time.      

MSI – File Tables Group

An installer package developer should consider populating the file table group of tables after breaking the application into components and features and after populating the core tables group. The file table group contains all of the files belonging to the installation and most of these files are listed in the File table. The Directory table is not listed in this group, but is closely related to the file table group. The Directory table gives the directory structure of the installation.

The file group of tables contains all of the tables that are related to files.

  • The File table lists files belonging to the installation. Files that are not listed in the File table include disk files, which are listed in Media table. Because every file belongs to a component, the File table has an external key into the Component table.
  • The RemoveFile table contains a list of files to be removed by the RemoveFiles action.
  • The Font table lists font files to be registered with the system.
  • The SelfReg 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 BindImage table lists files that are bound to DLLs imported by executables.
  • The MoveFile table specifies which files are moved during the installation.
  • The DuplicateFile table specifies which files are duplicated during the installation.
  • The IniFile table lists the .ini files and the information that the application needs to set in the file.
  • The RemoveIniFile table contains the information an application needs to delete from a .ini file.
  • The Environment table is used to set the values of environment variables and in Windows 95, the Environment table lists changes that will be made to the autoexec.bat file.
  • The Icon table provides icon information that is copied to a file as a part of product advertisement.

MSI Core Tables Group

The core group consists of tables describing the fundamental features and components of the application and the installer package. Developers of install packages should therefore consider how to populate these tables first because the organization of much of the database will become apparent from the content of this group.

  • 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.
  • The FeatureComponents table describes which components belong to each feature.
  • The Component table lists all components belonging to the installation.
  • The Directory table lists the directories that are needed during the installation. Because each component must be associated with one and only one directory, the Component table is closely related to this table and has an external key to the Directory table.
  • The PublishComponent table lists the features and components that are published for use by other applications. Components and Features are the two types of feature advertisement.