[Python-Dev] Python merge module

Michael Urman murman at gmail.com
Thu Feb 3 16:38:28 CET 2011


On Thu, Feb 3, 2011 at 00:30, "Martin v. Löwis" <martin at v.loewis.de> wrote:
> Another challenge with shared location merge modules is upgrades:
> the Python installer currently doesn't use stable component IDs;
> I think this would cause problems for users of the merge module.
> Providing stable component IDs is a challenge since it's difficult
> to version the files on disk.
>
> Not sure why Michael thinks that a private location merge module
> would provide no benefits to the user of the merge module.

I hadn't thought it through fully, but the preceding paragraph really
gets to the core of the problem. The maintenance nightmare is security
updates for private location installations by third parties. The only
MSI-friendly way to update that code is through releasing an updated
merge module and having the consuming application also release an
update that uses it. Since Python's components use fresh GUIDs each
time, this would require a "major" upgrade; "minor" upgrades would
cause Windows Installer to throw fits.

Technically this is a problem with the component generation in Python,
and for that in particular, a move to WiX could be very helpful. They
have stable component code generation which keys off of location,
name, platform, etc., but only works for single-file components.

For contrast, I don't see a shared-location merge module as offering
benefits beyond a silently redistributable msi package. The shared
location is better about following component code rules (re-use in
private areas is an allowed gray area), and there are people out there
who consider the reference counting through merge modules to be
superior. I find the resulting complexity in the consuming package's
installation to be more of a down-side.

>> I work on open source projects myself, and we always provide
>> both a merge module and a normal msi installer. It's very little
>> extra work (in WiX at least) to create both.
>
> But what's the quality of these? Ideally, I'd like to create a single
> merge module which, at the option of the user of the merge module,
> produces either a shared or a private installation. Is that still
> only little extra work in Wix?

I've never tried to make a configurable merge module in WiX, but I
think that's the only option if you want a single merge module to
allow both. It should be a one-time authoring overhead with [1]. Using
them is pretty straightforward within the Merge elements [2].

[1] http://wix.sourceforge.net/manual-wix3/wix_xsd_configuration.htm
[2] http://wix.sourceforge.net/manual-wix2/wix_xsd_configurationdata.htm

Michael


More information about the Python-Dev mailing list