Distutils: bdist_wininst. System integration use. (--silent option?, etc.)

Peter Schmiedeskamp pschmied at yahoo.com
Fri Oct 31 17:54:12 EST 2003


Hello, I'm writing in regard to the distutils package for python.

I regularly repackage installers for silent/automated distribution on
numerous Windows PCs throughout an enterprise.  Sites such as
AppDeploy (http://www.appdeploy.com) and tools such as WISE all
suggest that this is a pretty common task.

Increasingly, however, I've found that tools like WISE's setup capture
are becoming less relevant for this task.  Rather than running an
install and capturing the output, it is getting easier and more
reliable to simply wrap the original vendor's installer and invoke it
with the proper command line parameters to produce a silent install. 
So, repackaging is really becoming meta-packaging.

What is important with this meta-packaging is to properly prepare the
system environment (clean up icons, set registry keys, backup user
files, etc.) for the execution of the vendor's installer.  From my
experience, flow control and general language consistency of the
various installer applications is abysmal.  Python seems like the
logical replacement for the anemic or otherwise ill-planned scripting
languages that plague Windows software installers.

Enter Python:
The bdist_wininst tool looks to be very close to ideal for such a
purpose.  However, it lacks a couple key features
(please correct me if I'm wrong on any of these):
1. Silent or non-interactive installations
2. Installations to arbitrary locations

Currently, on packages requiring heavier weight logic, I must invoke a
py2exe generated executable.  This works very well, but as more and
more logic moves from an installer package to a python script, it
seems rather silly to use an entirely separate installer program to
merely bundle the py2exe generated files into a single self-extracting
installer.

I caught another thread from some time ago, where the python
developers talked about installers and their respective problems.
(http://mail.python.org/pipermail/distutils-sig/2001-July/002529.html)
 It seems like many good questions were raised, but I never found that
any elegant solution was found.

So, is anyone else using python for systems integration work? Would
someone familiar with the bdist suite care to speculate on the
difficulty/sensibility in extending the bdist package for this
purpose?

Perhaps a system integration toolkit would be a better place for this?
 It seems, though that bdist might be the right place for the
installer bits, but maybe people see other areas where code reuse
could take place.  Ultimately, maybe a bdist_msi might be possible.  I
think perl has some kind of MSI generating code.  Maybe this could be
a starting point for such an endeavor.

Sorry for the length of this post.  I'll be good next time.

-Peter






More information about the Python-list mailing list