Merge Modules and MSDE
By Microsoft Team
Published: 11/23/2003
Reader Level: Beginner Intermediate
Rated: 4.00 by 1 member(s).
Tell a Friend
Rate this Article
Printable Version
Discuss in the Forums

What Are Merge Modules?

Merge modules are a feature of Windows Installer that provide a standard method for delivering components, insuring that the correct version of a component is installed. A merge module contains a component, such as a .dll, along with any related files, resources, registry entries, and setup logic.

Merge modules are essentially simplified .msi files, which is the file name extension for a Windows Installer installation package. A standard merge module has an .msm file name extension.

A merge module cannot be installed alone because it lacks some vital database tables that are present in an installation database. Merge modules also contain additional tables that are unique to themselves. To install the information delivered by a merge module with an application, the module must first be merged into the application's .msi file.

A merge module consists of the following parts:

    • A Merge Module Database containing the installation properties and setup logic being delivered by the merge module.
    • A Merge Module Summary Information Stream Reference describing the module.
    • A MergeModule.CABinet cabinet file stored as a stream inside the merge module. This cabinet contains all the files required by the components delivered by the merge module.

More information on this subject can be found here:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vsintro7/html/vbconWhatYouNeedToKnowAboutMergeModules.asp

How Does MSDE Use Merge Modules?

MSDE has 25 merge modules that segment the full installation of the product.

Merge Module                 Contents
Atl.msm                   Active Template Library (ATL) logic, files, and registration
                          information
Connect.msm               Connectivity
Dev_scm.msm               Service Control Manager developer files
Dtc.msm                   Distributed Transaction Coordinator core files
Dts.msm                   Data Transformation Services (DTS) core files
Mfc42.msm                 Logic, files, and registration information needed to install the
                          retail version of the MFCDLL Shared Library
Msstkprp.msm              Logic, files, and registration information needed to install the
                          Microsoft Stock Property Page
Msvcirt.msm               Logic, files and registration information needed to install the
                          Microsoft Visual C++® Runtime Library
Msvcrt.msm                Logic, files, and registration information needed to install the
                          Microsoft C Runtime Library
Sem.msm                   SQL Enterprise Manager core files
Shared.msm                Implements SQL Server local language resource support.
Sqlagent.msm              SQL Agent core files
Sqlsrv.msm                SQL Server core files
Tools.msm                 SQL Server tools core files
Upgrade.msm               Upgrade files
1033\DTS_res.msm          Data Transformation Services resource files
1033\Sqlagent_res.msm     SQL Agent resource files
1033\Sqlbase.msm          SQL Server Setup
1033\Sqlsrv_res.msm       SQL Server resource files
1033\Tools_res.msm        SQL Server Tools resource files

Desktop Engine does not require the merge modules listed in the following table; these modules supply additional functionality. You can omit them to conserve space.

Optional Merge Module            Contents
Dmo.msm                        Distributed Management Objects (DMO) core files
1033\Dmo_res.msm               Distributed Management Objects resource files
Repl.msm                       Replication core files
1033\Repl_msm                  Replication resource files

Merge modules cannot be installed directly, but rather are merged into an installer for each application that uses the component. This insures that the component is installed consistently for all applications, eliminating problems such as version conflicts, missing registry entries, and improperly installed files.

Customizable Installation Properties

The Setup.exe installation properties that can be changed using switches and .ini files can also be changed in Windows Installer packages by editing the Property table of the main .msi file. To edit the Property table, use a tool such as Orca.exe, which is distributed as part of the Windows Installer SDK. The properties that can be changed and the Setup.exe switches to which they correspond are listed in the following table.

External Property               Internal Property
ALLOWXDBCHAINING              SqlAllowXDBChaining
CALLBACK                      SqlCallback
COLLATION                     SqlCollation
DATADIR                       SqlDataDir
DISABLENETWORKPROTOCOLS       SqlDisableNetworkProtocols
TARGETDIR                     SqlProgramDir
INSTANCENAME                  SqlInstanceName
SAPWD                         SqlSaPwd
SECURITYMODE                  SqlSecurityMode
UPGRADE                       SqlUpgrade
UPGRADEUSER                   SqlUpgradeUser
UPGRADEPWD                    SqlUpgradePwd

What Tools Are Used to Incorporate MSDE Merge Modules?

A Windows Installer setup program is needed to integrate MSDE merge modules into Windows Installer projects. Some of the most popular setup programs are Windows Installer.Net, InstallShield, and Wise for Window Installer.

More information on these technologies can be found below:

InstallShield
http://www.installshield.com/default.asp

Wise for Windows Installer
http://www.wise.com/index.asp?bhcp=1

Visual Studio.Net Installer
http://msdn.microsoft.com/vstudio/

Why Would a Developer Use MSDE Merge Modules?

Using merge modules allows independent software vendors (ISVs) to install an instance of the SQL Server 2000 Desktop Engine during their own setup processes. These merge modules can be merged into an ISV setup program using available Windows Installer setup development tools. It allows the developer to reduce the disk footprint of your application by customizing the MSDE 2000 Setup so that it does not install SQL Server 2000 components that are not used by your application. You can leave out the DMO*.msm files, Repl*.msm files, or both. These are merge modules for SQL-DMO and replication, respectively. It also allows the developer to control properties of MSDE installation such as instance name, target directory, and security mode.

How are MSDE Merge Module Installations Different from the MSDE MSIs That Microsoft Provides?

The MSDE installation created by using merge modules cannot be updated by service packs created by Microsoft. The developer of the custom MSDE installation is responsible for creating a patch file, an .msp file, which incorporates the updated version of merge modules. The developer would then need to update the existing installation with the newer version. This could be a major supportability issue for customers who use custom applications that have MSDE embedded in them (hidden costs of development and possible security vulnerability).

MSIs provided by Microsoft have been tested and are supported by PSS. The MSIs are upgradeable by patches and service packs that Microsoft provides.

PSS Recommendations Regarding MSDE Merge Modules

Due to rapidly changing threats to the security of our IT systems, we strongly suggest that customers use the MSIs provided by Microsoft and not use merge modules. Using the MSIs provided by Microsoft allow the customer greater flexibility in responding to these threats and making sure that their MSDE embedded applications are secure.

© 2003 Microsoft



Marketplace
(Sponsored Links)
What are the green links?
   



 
Copyright 2007 CMP Tech LLC | Hosted By SecureWebs.com
Privacy Policy (4/10/06) | Your California Privacy Rights (4/10/06) | Terms of Service | Advertising Info | About Us | Help