[Python-Dev] VC 7.1 maintenance?

"Martin v. Löwis" martin at v.loewis.de
Sun Jul 4 11:00:39 CEST 2004

Mark Hammond wrote:
> On one hand, the code has almost no comments and assumes some knowledge of
> the underlying MSI mindset.

That's a valid complaint indeed.

> With just a few tweaks (mainly relating to missing files), I managed to get
> an MSI that appears to install correctly.  I think that is pretty cool :)  I
> believe it has the basis for a reasonable MSI generator library.  The
> hard-coding of the UI elements is unfortunate, but I see no alternative at
> this stage.  Using distutils functions for building file lists etc would be
> a nice for a few reasons, least of all for a future bdist_msi :)

bdist_msi would probably need a different UI entirely, so I'll probably
start from scratch for it, only using msilib.

> Martin - links to articles you found enlightening while putting this
> together is probably the largest omission - how did you come up with this?

That's partially covered in my PyCon paper: My rationale for doing this
was Win64. We have a few Itanium machines, and I wanted Python for them.
I found that the VC7.1 MSI generator is useless for that purpose: You
have to set the 64-bit-Bit on each "component", and VC is incapable of
doing that. OTOH, it generates so many "components" that it is futile
to manually fix the package it generates.

I've looked around, and found that there is no freeware MSI generator
which supports Win64 at this point, and apparently the commercial ones
didn't, either. I also found that most MSI generators don't support
the logical structuring of MSI, with components, files, directories,
and so on. So I wrote my own.

While trying to understand MSI, I had two primary information sources:
the MSDN documentation, and ORCA.EXE. The latter tool comes with the
SDK, and needs to be installed separately: The SDK installs orca.msi,
which then installs orca. With orca, you can learn a lot about how
other people build their MSIs, and find out how certain effects
which you know are possible can be achieved.

WIX was released after I had done my thing. I haven't looked at it,
but I would hope that it also exposes the full power of MSI. So if
people are concerned about the hackishness of my current code, I
could try to come up with a WIX installer that generates roughly the
same MSI package.


More information about the Python-Dev mailing list