What are merge modules and how are they used?

Russel picture Russel · Jul 26, 2010 · Viewed 11.2k times · Source

What are merge modules and how are they used? I heard that they are .msm files, but I've never seen that before (I've only seen .msi).

Are they used when you create msi files? Are they distributed with commercial software (presumably together with msi files?)

What is the point of them? Are they to hide the implementation of the installer for common third party or Microsoft components that need to be installed together with developed software (and therefore distributed together)?

Thanks!

Answer

selbie picture selbie · Jul 26, 2010

MSI = Windows Installer Package

MSM = Merge Module

Here's how one setup guru explained it to me: "MSI is to EXE as MSM is to LIB".

That is, an MSI package is a standalone installer package. You build MSI packages to distribute to customers or for them to download and run directly. Where an MSM is a setup package that can't be installed directly - it has to be included within an MSI. For example, the Visual C Runtime (msvcrt90.dll and friends) are distributed as an MSM merge modules. If your app depends on the CRT, you might reference Microsoft_VC100_CRT_x86.msm into your MSI.

There are different ways to build both MSI installer packages and MSM merge modules. One such way to author setup packages is with the WIX toolset. Some links that may be of interest below:

http://wix.sourceforge.net/manual-wix2/overview.htm

http://wix.sourceforge.net/manual-wix2/authoring_merge_modules.htm