Well that is all very unfortunate.

Is there a way to have a component encompass changing files? For
instance, from one compatible version to another, files may in fact be
removed and changed: those files were used internally. My main problem
seems to be that components cannot contain directories. If this was
possible, I would simply put the entire installer into a single
component, and only change component IDs when there was no compatibility
between versions.

What a bother.

I do not want to allow software to use a private copy of this library. I
don't really have much reason for that other than I don't want two
copies loaded at the same time, as there is a large memory issue.

On Thu, 2007-05-31 at 20:39 +0100, Mike Dimmick wrote:
> 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