py2exe Dateien in .exe einbetten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Ich schreibe gerade mit Python einen Wrapper für die datei foo.exe. Der Wrapper wird mittels py2exe die Datei bar.exe gewandelt. Momentan steht in bar.exe hardcoded drin, dass sich foo.exe unter einem bestimmten Pfad befindet.

Kann ich mit py2exe foo.exe in bar.exe einbetten, so dass ich unabhängig von diesem Pfad bin? Also dass sich foo.exe in bar.exe drin befindet und dadurch immer gefunden wird?

Wenn ja, wie geht das?

Ach ja: und wie muss ich dann foo.exe aufrufen?
Benutzeravatar
microkernel
User
Beiträge: 271
Registriert: Mittwoch 10. Juni 2009, 17:27
Wohnort: Frankfurt
Kontaktdaten:

Wenn du die Source von foo.exe hast könntest du sie doch einfach in bar.py einfügen.
Wenn du nicht die Source von foo.exe hast könntest du dir den exe-Code von foo.exe ziehen und diesen dann als string in dein Programm speichern. Damit kannst du die exe dann immer erzeugen wenn du sie brauchst.
Ich stell mir das dann so vor (ungetestet):

Code: Alles auswählen

fooSource = "....exe code..."

# Zum erzeugen der exe
tmpFoo = open("foo.exe", "wb")
tmpFoo.write(fooSource)
tmpFoo.close()

# Zum starten der exe
os.system("start foo.exe")

...

# Und schließlich zum löchen der exe
os.system("del foo.exe")
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Schonmal keine schlechte Idee, aber ich hab mir das eleganter vorgestellt. Ich möchte nicht den Binärcode erst auf Platte schreiben müssen... ginge da notfalls auch StringIO?

Ich kenne das von einem "php2exe" Compiler namens Bambalam. Dort kann man beim Erzeugen der .exe Datei beliebige Ressourcen in die .exe mit einbetten, also ich glaube die werden dann statisch gelinkt. Die Ressource steht dann in der .exe Datei immer zur Verfügung.

Geht sowas auch mit py2exe?
droptix
User
Beiträge: 521
Registriert: Donnerstag 13. Oktober 2005, 21:27

Nee, StringIO ist Blödsinn, denn ich kann das Objekt ja nicht wie eine .exe Datei aufrufen...

Bessere Ideen?
Antworten