Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

xardias

Community-Fossil

  • »xardias« ist der Autor dieses Themas

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

1

03.06.2010, 22:14

Deployment von Anwendungen als single executable

Hallo allerseits,

Ich habe eine Anwendung die ich gerne als einzelne exe vertreiben würde. Dummerweise braucht die Anwendung ein paar Hilfsdateien (DLLs/etc). Da ich die Anwendung nicht selbst kompilieren kann suche ich nach einer Möglichkeit eine neue Exe zu erzeugen die alle nötigen Dateien enthält, sich automatisch entpackt und dann meine Anwendung startet.

Das sollte funktionieren ohne, dass der Nutzer auch nur Ansatzweise etwas davon mitbekommt. D.h. Winzip Self-Extracting Archives fällt weg.

In Bildern gesprochen:

Ich hab das:

(Link)

Möchte aber gerne das:

(Link)

Und die exe soll all ihre Funktionalität behalten.

Kennt jemand ein Tool für sowas?
Grüße,
Dennis

Alyx

Treue Seele

Beiträge: 236

Wohnort: Hannover

Beruf: Head Of Software Development

  • Private Nachricht senden

2

04.06.2010, 09:36

Tool direkt nicht, aber wie man das selbst realisieren könnte:
eigene SFX-Anwendung bauen, mit dem selben Symbol etc. der echten Awendung. Dort die benötigten Dateien als Resourcen hinzufügen. Von diesen Resourcen kann man sich dann recht leicht ein Access-Handle holen, um an die Daten zu kommen, welche man dann einfach in das Start-Verzeichnis extrahiert/schreibt. Anschließend erstellt man einen Prozess, der die echte Exe ausführt und checkt regelmäßig... also in einer Dauer-Sleep-Schleife, ob der Prozess noch existent ist. Ist er das nicht mehr, löscht man die extrahierten Dateien. Zusätzlich sollte man via named Mutex noch dafür sorgen, dass das eigene SFX-Programm nicht zwei mal gestartet werden kann, was ja sonst zu üblen Nebenwirkungen führen würde. Damit der Benutzer nicht auf die schlaue Idee kommt selbst die extrahierte Exe zu starten könnte es sicherlich auch nicht schaden, diese mit .DLL-Endung zu extrahieren, ShellExecute interessiert das ja nicht.

LG
Alyx

3

04.06.2010, 11:23

man muss die .exe eigentlich gar nciht extrahiert abspeichern, sondern kann einfach einen funktionszeiger auf dei startadresse der exe, wie sie da imspeicher liegt, udn ruft den auf, oder gibt das probleme?
ok, wahrscheinlich mag die Datenausführungsverhinderung sowas nciht, aber ansonsten?

Alyx

Treue Seele

Beiträge: 236

Wohnort: Hannover

Beruf: Head Of Software Development

  • Private Nachricht senden

4

04.06.2010, 14:00

Naja die Exe ansich ist ja erstmal keine Funktion die man aufrufen könnte, also die Daten dahinter. Anstatt eine Exe auszupacken wäre es aber sicherlich sauberer, das ganze einfach in eine DLL zu packen, deren MainLoop man exportiert, dann kann man sich auch das Ganze mit dem named Mutex etc. sparen.

LG
Alyx

Werbeanzeige