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