[Python-Dev] Packaging and binary distributions for Python 3.3 (original) (raw)

Paul Moore p.f.moore at gmail.com
Fri Oct 14 16:40:16 CEST 2011


On 14 October 2011 15:07, "Martin v. Löwis" <martin at v.loewis.de> wrote:

I can't really comment on this. I agree in principle with what you're saying, but I know little about the MSI format so I can't say much more. It feels to me like you're suggesting that the MSI file encapsulate the file layout logic that already has to exist in pysetup, though, which sounds like duplication of effort. Can MSI call out to pysetup to actually install the files and save this duplication? I'm not sure what exactly it is that pysetup does, so I can't say whether there is any duplication. It's possibly to have post-install actions in MSI, so if the files get put into (some) place at first, it would be possible to copy/link them to whatever layout is needed.

OK, that might be a useful approach.

What I'd like to avoid is that people need to create too many different packages on Windows, for different use cases. It would be better if the author/packager could create one Windows distribution, and have that work in all use cases.

Absolutely. That is crucial if we're to avoid the sort of fragmentation we've seen in the past (with bdist_wininst, bdist_msi and binary eggs). I don't know if we'll ever get down to one format, but that would be the ideal.

As for MSI: it's primary advantages over bdistwininst is the higher flexibility of integration into systems maintenance infrastructures. UI-less installation, installation through Active Directory, nested installation (as part of some bundle of installers) are all supported by MSI out of the box. IMO, the primary reason to keep bdistwininst (besides popularity) is that you need to run the packaging on Windows to create an MSI file, whereas bdistwininst can be created cross-platform (as long as there are no binary extension modules). In addition, bdistwininst is better wrt. to repeated installations. I'd prefer a setup though where the same package can work in multiple installations without requiring physical copies.

One other aspect is that MSI format is essentially opaque (correct me if I'm wrong here). With bdist_msi, if I want to get the compiled binaries out for some reason (maybe to install them in a virtual environment or some type of other custom build) I just unzip the file

Also, there are fewer people with expertise in MSI format. I suspect that even a Unix developer could have a go at modifying the C code in bdist_msi, it's not too MS-specific. I don't know if that's possible for bdist_msi. Speaking personally, the msilib documentation is pretty unreadable, as I don't know anything about the MSI format. Whenever I've tried reading the MS documentation in the past, I've found it pretty impenetrable (a link to a simple tutorial, and some examples of use, in the msilib documentation might help).

Paul.



More information about the Python-Dev mailing list