Back to the original topic of merge modules:

Merge modules simply provide components to a larger install. There is no
concept of 'not installing if already installed' - the file versioning
mechanism covers this. The components are reference-counted so that the
component is maintained on the system until all products using the component
are removed. Installation packages should, as far as possible, be
self-contained.

If your component is completely compatible with the older version and
directly replaces it, you should keep the same file name and install
location (potentially retargetable) and keep the same component GUID, and
increment the file version number. If not completely compatible, you should
change the file name and/or install location and generate a new component
GUID. These rules are general for all Windows Installer packages but are
particularly important for components that will be shared among multiple
packages.

You probably do want to make your module retargetable - i.e. make the
install directory configurable - so that your clients can keep their own
private copies of the files, rather than installing to a shared folder. Only
install to a shared folder if the component can only tolerate one version
running on the system at a time, which is a very rare requirement - perhaps
they use a specific format of shared memory section or shared data file
format which cannot be made forwards- and backwards-compatible.

Once merged, the module's identity is lost. There is no sign, from a Windows
Installer level, that the module ever existed (there's a few traces in the
component/file/etc names, that there's a GUID attached to each original name
to ensure there aren't conflicts, but otherwise no sign, and nothing that
can be queried). This means that you cannot, as the merge module developer,
detect and patch files because you don't have the product GUID which is what
Windows Installer uses to track that information. To service the contents of
the module, you have to distribute the updated merge module to all the users
of that merge module, and they have to update their packages and distribute
them. This is one major reason why Microsoft are moving away from merge
modules.

The VS merge modules are OK to use because they rely on Windows'
side-by-side assemblies feature, where a publisher policy configuration file
can override the version specified in the application's manifest - the
publisher of the component can override which version of the library will be
used (although the application can then force the older version again
through its own configuration file!)

Windows Installer used to support nested MSIs but there's some reason that
feature was deprecated (the engine still supports it for legacy products but
the documentation now simply says 'don't'). Phil Wilson says in "The
Definitive Guide to Windows Installer" that minor upgrades and patches
aren't possible with nested installs - again the servicing problem raises
its ugly head.

-- 
Mike Dimmick

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Jerome Haltom
Sent: 30 May 2007 03:13
To: Bob Arnson; wix-users@lists.sourceforge.net
Subject: Re: [WiX-users] upgradable merge modules

> That level of control isn't possible in a merge module. Provide an .msi 
> package instead.

So, what's the point of merge modules then? If I can't distribute a
third party library that other people can use as a dependency, what good
are they for?

And I don't think one can reasonable say it can be used as a dependency
if two consumers installs will conflict.

If I provide a .msi file, how will their .msi file include it?


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to