2013-04-04 7 views
6

Ich baue eine Installations-EXE für mein Projekt mit bdist_wininst von setsetool. Ich habe jedoch festgestellt, dass, wenn ich tatsächlich gesagt laufen Installationsprogramm auf einem Win7-64bit Maschine w/Python 2.7.3, habe ich eine Runtime Error erhalten, die wie folgt aussieht: http://i.imgur.com/8osT3.jpg. (nur der 64-Bit-Installer gegen Python-2.7 64-Bit; der 32-Bit-Einsen (auf Python2.7 32-Bit) scheint gut) Ich kann auf OK klicken und der Installer beendet, aber das sieht definitiv schlecht für Endbenutzer aus.Windows-Installationsprogramm, das mit setup.py erstellt wurde bdist_wininst löst RuntimeError bei der Installation aus. Wie behebe ich das?

Irgendwelche Ideen, wie es zu lösen?

+0

Gerade clairify, hat Py2.7.3 + Win6_64bit nicht. Py2.7.4 + Win7_32bit funktioniert? Ich gehe davon aus, dass Sie die Laufzeitbibliotheken nicht korrekt kreisen. Wie verpacken Sie Ihre Sachen? – Torxed

+0

Ich Paket mit bdist_wininst auf Ubuntu Linux 12.10, die die exe produziert. Der distutils Code (Befehl/bdist_wininst.py) anhängt nur Informationen an den Stub-Installateure (wininst-9.0.exe und wininst-9,0-amd64.exe) und fand in /usr/lib/python2.7/distutils/ (create_exe sehen) Befehl). Beachten Sie, dass ich den Code leicht monkey-patch, um die richtige exe (Fehler mit Python2.6 +) zu verwenden. – UsAaR33

+0

Aus Neugier, haben Sie versucht, alles auf einer tatsächlichen Windows-Maschine boundling? Ich habe nur schlimme Angst, dass das ganze Problem ist, weil die ursprüngliche Quelle viele DLLs fehlt, die ein Windows-Installer benötigen könnte und dort für das Paket nicht abgeschlossen ist. – Torxed

Antwort

1

Möglicherweise fehlt ein Visual C++ Redistributable Package oder ist beschädigt. Versuchen Sie (neu) Microsoft Visual C++ 2008 SP1/2010 Redistributable Package (x64) oder eine andere Version zu installieren.

+0

Meine Entschuldigung; Ich war in der ursprünglichen Frage nicht klar. Die Installations-EXE wird mit bdist_wininst von setuptool erstellt, wo bereits eine korrekte EXE vorhanden sein sollte. – UsAaR33

+0

Dann Sie eine falsche Abhängigkeit haben, wenn Sie die Installation exe bauen (vielleicht irgendwo gibt es eine x86-x64-Einstellung oder Sie müssen in somekind Config die richtige msvcr {version [80/100]}/msvcp [80/100] Karte } dll). –

+0

Auch hier existiert die EXE bereits. Sie ist als Teil von Distutils verteilt. Der Befehl bdist_wininst (siehe Hauptkommentare) fügt nur Daten an ihn an – UsAaR33

1

Vielleicht müssen Sie die ausführbare Datei speziell für die x64 erstellen? Dies ist der Befehl, den Sie würde laufen müssen:

python setup.py build --plat-name=win-amd64 

Weitere Informationen finden Sie hier:

http://docs.python.org/2/distutils/builtdist.html#cross-compiling-on-windows

+0

Ich verwende diese Option bereits; Es steuert, welche Vorlage EXE bdist_wininst verwenden soll. Es hat keinen anderen Effekt für Pakete ohne Erweiterungsmodule (wie meins). – UsAaR33