[Python-de] Python-Programme installieren

"Martin v. Löwis" martin at v.loewis.de
Mit Sep 13 18:23:51 CEST 2006


Alexander 'boesi' Bösecke schrieb:
>> Die einzige Frage ist dann, wie man das MSI-File erzeugt. Ich mache
>> das jetzt immer mit meiner eigenen Bibliothek (msilib.py), aber es
>> gibt viele andere Tools (Visual Studio, WiX, ...).
> 
> Aus welchem Grund hast du dir ein eigene Bibliothek geschrieben? Kannst
> du das veröffentlichen? Oder hast du das nur speziell für deinen eigenen
> Bedarf geschrieben?

Es ist in

http://svn.python.org/projects/python/trunk/Tools/msi/

(msilib.py). Ich habe es geschrieben, um die MSI-Files für Python zu
erzeugen. Ich hatte zuerst den MSI-Generator von Visual Studio 2003
verwendet. Der taugt aber nichts; insbesondere kann er keine
Win64-Pakete (da muss man im MSI irgendwelche Flags setzen, und das
ist nicht unterstützt). Mit meinem eigenen Generator kann ich auch
mein eigenes GUI erzeugen, anstatt das Standard-GUI zu nehmen,
was VS.NET generiert. Ich hatte dann auch noch (kurz) WiX ausprobiert,
aber gefunden, dass WiX MSI auch nicht viel einfacher macht.

Der Vorteil eines Python-Skripts für die MSI-Generierung liegt vor
allem darin, dass man richtige Algorithmen schreiben kann. Für
das Python-MSI habe ich zum Beispiel:
- suche alle .pyd-Dateien in PCbuild, vergleiche sie mit einer
  Liste, und melde, wenn es zusätzliche/fehlende Module gibt.
- füge für jede .pyd-Datei die zugehörige .lib-Datei ein
  (anstatt alle .lib-Dateien zu integrieren - da wären auch
   debug-Dateien dabei)
- suche rekursiv im Verzeichnis Lib alle .py-Dateien, überspringe
  aber .svn und plat-*. Wenn "test" im Verzeichnisnamen vorkommt,
  füge es in das "test"-Feature ein (was separat installiert
  werden kann).
Der Python-Packager ist in msi.py; msilib.py ist die Bibliothek
zum Erzeugen beliebiger MSI-Files.

In Python 2.5 habe ich das Modul zu bdist_msi erweitert. Das geht
wie bdist_wininst, erzeugt aber ein MSI-File. Es ist natürlich
ausschließlich auf die Belange von distutils-Anwendungen fokussiert.

>> Der Einarbeitungsaufwand in MSI ist ziemlich hoch.
> 
> Wenn man komplett sein eigenes Installationsscript schreibt, ist der
> Aufwand kaum geringer, wie ich feststellen durfte. Und da ist noch keine
> Möglichkeit dabei irgendwas auszuwählen. Die größte Schwierigkeit war
> letztenendes ein Paket, das distutils zum installieren verwendet.

Der Aufwand ist für jede Paketierungssoftware hoch - allerdings ist
für MSI der Aufwand *wirklich* hoch (eine vollständige Einarbeitung
braucht mehrere Jahre - ich habe noch nicht alles verstanden).

Ciao,
Martin



More information about the python-de mailing list