[Distutils] Thinking about a Windows Installer

Greg Ward gward@python.net
Sat, 20 May 2000 10:41:14 -0400


On 17 May 2000, Thomas Heller said:
> I'm currently thinking about a bdist_winexe command for distutils.
> (Is there a better name?)

How about "bdist_wininst"?

> This command will create a single executable file similar to those
> created with Wise or Installshield installers (except that you don't
> need to have these _commercial_ programs installed).

There is some sort of informal arrangement that lets Python developers
use Wise to create installers of free Python extensions for free.  I
think the same arrangement lets Guido create Python installers for free.
So we probably shouldn't toss Wise out the window just because it's
commercial; it might be a good (and zero-cost, if not entirely free)
option for Python-on-Windows developers.

> This exe-File consists of a C-program embedding python, appended
> is a zip-compatible archive of the modules to distribute, the setup.py
> script, as well as an ini-file "setup.ini" or something like that which
> contains the distribution meta-data in a format easily readable by
> the C-program.

Whether you want to embed Python really depends on your audience.  Let's
face it, installing Python on Windows is not that hard.  If a programmer
wants to use some collection of modules, it's not too bad to say,
"Download and install Python, then download and install the module
distribution".  Painless * 2 is not too bad.

For end-user applications, though, embedding a Python interpreter (and
however much of the standard library as is needed) is probably the right
thing to do.  I think it should be up to the module developer/packager
to decide he distributes a "Python-less" installer or a big fat one (or
both).

Now, if you *do* end up writing your own installer GUI (instead of using
Wise), how much of it can be written in Python rather than C?  I assume
doing this would require the presence of the Win32 extensions, so
"painless * 2" might become "painless * 3".  Hmmm... I'd be reluctant to
make someone install Python *and* the Win32 stuff just to run an
installer.

> This exe-File, when run, simply unpacks the archive into a temporary
> directory, displays a nice GUI, runs the setup.py script, and cleans
> up the temp-dir.

I think the mode of operation should be as close to the other bdist
commands as possible: distribute a pseudo-installation tree and just
copy it in place.  That is, the setup script shouldn't enter into it
here, *unless* you need it to extract package meta-data.  (Unless that's
put into another file when you run "bdist_wininst".)

        Greg
-- 
Greg Ward - just another /P(erl|ython)/ hacker          gward@python.net
http://starship.python.net/~gward/
All programmers are playwrights and all computers are lousy actors.