Specifying the Directories that Contain Merge Modules

InstallShield 2018

Project • This information applies to the following project types:

Basic MSI
InstallScript
InstallScript MSI

InstallShield lets you specify the locations on your local machine, or on a network, where you are storing merge modules (.msm files). This flexibility enables you to store merge modules in source code control and to share a common set of merge modules with other team members.

InstallShield offers several ways for specifying the search paths for merge modules:

If you are editing or building from within InstallShield, use the Merge Modules tab on the Options dialog box—which is displayed when you click Options on the Tools menu—to specify a comma-delimited list of machine-wide folders and current-user folders.

InstallShield saves the paths that you specify on the Merge Modules tab in the registry on your machine. The paths that you specify for the current user are stored in the following location:

HKEY_CURRENT_USER\Software\InstallShield\Version\Professional\Project Settings\MMSearchPath

The paths that you specify for all users are stored in the following location:

HKEY_LOCAL_MACHINE\Software\InstallShield\Version\Professional\MMSearchPath

The Options dialog box is not available if you are using the Standalone Build to build a release; however, if you want, you can manually add the paths to the registry on a machine that has the Standalone Build.

If you are building from the command line with ISCmdBld.exe, use the -o parameter to specify a comma-delimited list of folders.

If you use an .ini file to specify ISCmdBld.exe parameters, you can use the MergeModulePath parameter in the [Mode] section of your .ini file to specify a comma-delimited list of folders.

If you are building through MSBuild or Team Foundation Server (TFS), use the MergeModulePath parameter on the InstallShield task. This parameter is exposed as the ItemGroup InstallShieldMergeModulePath when the default targets file is used. To specify multiple paths, use an ordered array of paths.

Instead of using hard-coded paths, you can use path variables in paths, as in the following example:

<ISProductFolder>\MergeModules,<ISProjectFolder>\MyCustomMergeModules

The Redistributables view and the Objects view list the names of the merge modules that correspond with the merge modules that are present in the various search paths that are specified on the Merge Modules tab of the Options dialog box. If the same merge module is in multiple search paths, InstallShield shows only the first instance that it encounters. InstallShield first searches each path that is listed in the per-user setting on the Merge Modules tab. Then, InstallShield checks each path that is listed in the machine-wide setting.

At build time, if your project includes one or more merge modules, InstallShield (or the Standalone Build) searches the specified locations and includes the appropriate merge modules in your release as needed. If the same merge module is in multiple search paths, InstallShield includes in the build only the first instance that it encounters. It uses the following order to search for merge modules:

1. InstallShield checks each path that is listed in the per-user setting on the Merge Modules tab. The paths are saved in the following location in the registry.

HKEY_CURRENT_USER\Software\InstallShield\Version\Professional\Project Settings\MMSearchPath

Note that the Merge Module tab is not applicable to the Standalone Build, but the registry path is applicable.

2. InstallShield checks each path that is listed in the machine-wide setting on the Merge Modules tab. The paths are saved in the following location in the registry.

HKEY_LOCAL_MACHINE\Software\InstallShield\Version\Professional\MMSearchPath

Note that the Merge Module tab is not applicable to the Standalone Build, but the registry path is applicable.

3. InstallShield (or the Standalone Build) checks the paths that are specified through the -o command-line parameter, the MergeModulePath .ini file parameter, or the MergeModulePath parameter on the InstallShield task.
4. If no paths are specified in any of the aforementioned locations, InstallShield checks the following default directories, in order:
a. InstallShield (or Standalone Build) Program Files Folder\System
b. InstallShield (or Standalone Build) Program Files Folder\Modules\i386
c. InstallShield (or Standalone Build) Program Files Folder\Objects
d. InstallShield (or Standalone Build) Program Files Folder\Modules\i386\Japanese
e. InstallShield (or Standalone Build) Program Files Folder\Modules\i386\German
f. Program Files Folder\Common Files\Merge Modules

Tip • If you are using the Standalone Build to build a release that includes merge modules but you do not specify one or more search paths through any of the user-defined methods (that is, in the registry, through the command line or the .ini file, or through the InstallShield task), the Standalone Build searches the aforementioned default directories for the merge modules. However, if you specify one or more search paths and do not explicitly include the default directories, the Standalone Build does not search the default directories.

See Also