Specifying the Directories that Contain Merge Modules

InstallShield 2012 Spring Express Edition

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 Module Options 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.
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 lists 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 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.
2. InstallShield checks each path that is listed in the machine-wide setting on the Merge Modules tab.
3. InstallShield 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 Program Files Folder\System
b. InstallShield Program Files Folder\Modules\i386
c. InstallShield Program Files Folder\Objects
d. InstallShield Program Files Folder\Modules\i386\Japanese
e. InstallShield Program Files Folder\Modules\i386\German
f. Program Files Folder\Common Files\Merge Modules