Merge Modules

Using Merge Modules

I think many MSI developers would agree with me in saying that Merge Modules were a good idea that just didn’t quite pan out. The concept of having the software vendors distribute their critical DLL’s and such in the form of well-authored modules which you can easily add to your distribution packages is great, but it doesn’t work that well in truth. One reason is that vendors rarely go to the trouble of making merge modules, whether in their own MSI-based installations or for public download; Microsoft is certainly guilty of talking up how everybody should be using merge modules while releasing but a scant few of their own (even some products for which they formerly released MSM’s such as the MDAC, they no longer do).

The other reason, in my opinion, is that they can be a tiny bit frustrating to use. The “merge” part of the nomenclature is appropriate in that it describes how it is used: when you compile your MSI project, the MSM’s are literally merged into the database. If your MSI database already has component names, files
or other primary key items with the same name as the MSM author used, the merging process with go with your MSI and hope for the best, and WfWI 4.x only gives you a message stating that there was a problem, but it doesn’t give the line or key reference. Imagine then that when you ignore this warning prompt, you could
be inadvertently breaking the functionality of the merge module.

Also, when you import an MSM into a package you developed from SetupCapture, WPS will prompt you and then try to remove the duplicate references in your WSI/MSI. In my experience, this is not always successful, and thus I suggest that you take at least a casual look through the MSM(s) you are using after applying
them, and be certain that your package is not already trying to install those pieces. (WIE does not show the merge module’s components and files and such unless you specifically change the little-used setting for this.)

Microsoft DAO 3.5 & 3.6

If your SetupCapture application contains any of the following DLL’s, you should remove the files and all related Registry entries and use the merge modules instead. Importing into Wise should prompt you to remove the duplicate entries, but it is not foolproof. Note that after you have added the MSM’s to the MSI
the Package Validation program can help you find files & Registry entries that are duplicated between the MSI and the MSM-as above, remove anything in the MSI and leave the merge module alone.

Note that DAO 3.6 is not backwards-compatible with v3.5. The two versions can co-exist happily on one machine, but if a program requires v3.5 it cannot use v3.6 on its own.

DAO 3.5: If any of the following files are found, use the merge module MSDAO35.MSM.

  • Dao350.dll
  • Dao2535.tlb

DAO 3.6: If any of the following files are found, use the merge module DAO360.MSM.

  • Dao360.dll

Microsoft JET Engine 3.5 & 4.0

If your SetupCapture application contains any of the following DLL’s, you should remove the files and all related Registry entries and use the merge modules instead. Importing into Wise should prompt you to remove the duplicate entries, but it is not foolproof. Note that after you have added the MSM’s to the MSI
the Package Validation program can help you find files & Registry entries that are duplicated between the MSI and the MSM-as above, remove anything in the MSI and leave the merge module alone.

JET 3.51: If any of the following files are found, use the merge module JET351.MSM.

  • Expsrv.dll
  • JETCOMP.exe
  • msexch35.dll
  • msexcl35.dll
  • msjet35.dll
  • msjint35.dll
  • msjt4jlt.dll
  • msjter35.dll
  • msltus35.dll
  • mspdox35.dll
  • msrd2x35.dll
  • msrepl35.dll
  • msrpfs35.dll
  • mstext35.dll
  • msxbse35.dll
  • vbajet32.dll
  • VBAR332.DLL
  • Odbcjet.hlp
  • Odbcjet.cnt

Note: Use JET351.MSM instead of Wise’s MSJET35.MSM (which I believe is version 3.50).

JET 4.0-SP6: If any Jet 4.0-related files are found, use the merge module JET40SP6.MSM.

Note: I believe Jet 4.0 is not backwards compatible with v3.5x and both can co-exist on the same machine.