ModuleSignature Table

The ModuleSignature Table is a required table. It contains all the information necessary to identify a merge module. The merge tool adds this table to the .msi file if one does not already exist. The ModuleSignature table in a merge module has only one row containing the ModuleID, Language, and Version. However, the ModuleSignature table in an .msi file has a row containing this information for each .msm file that has been merged into it.

Merge and verification tools check the ModuleSignature table in .msi files to determine if it has all of the dependent merge modules required by the current merge module (see ModuleDependency Table) and whether the installation package was previously merged with any conflicting merge modules (see ModuleExclusion Table).

The ModuleSignature table has the following columns.

Column Type Key Nullable
ModuleID Identifier Y N
Language Integer Y N
Version Version N




An identifier that uniquely identifies the merge module. Two merge modules cannot have the same ModuleID unless the merge module is entirely backward compatible with its predecessor. You can create a GUID for this field using a utility such as GUIDGEN. The ModuleID column is a primary key for the table and therefore it must follow the naming convention in Naming Primary Keys in Merge Module Databases. For example, if the readable name of the merge module is MyLibrary and the GUID is {880DE2F0-CDD8-11D1-A849-006097ABDE17}, the entry in the ModuleID column becomes MyLibrary.880DE2F0_CDD8_11D1_A849_006097ABDE17.


The Language identifier specifies the default language for the merge module. The language identifier is in decimal format, for example, U.S. English is 1033. The language used by the merge module can be changed by applying a transform to the merge module before merging.


The Version field contains a string that describes the major and minor versions of the merge module.



Multiple Language Merge Modules