Autor Beitrag
jackie05
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: Mo 07.01.08 01:51 
Hallo,
ich möchte gerne unter Delphi 7 einen Exe Packer schreiben, z.B. wenn ich auf Button1 klicke, öffnet sich ein OpenDialog und dort wähle ich die Exe Datei aus und auf Button2 wähle ich die Dateien über MultiSelect aus die in diese Exe Datei gepackt werden sollen und dann abgespeichert werden soll.

Gibts da vieleicht welche Tutorials oder könnt ihr mir helfen wie ich das ambesten hinbekomme?

Vielen Dank.

MfG


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 07.01.2008 um 02:03
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 07.01.08 02:01 
Moin!

Willst du auch den Pack-/Auspack-Vorgang selbst schreiben :shock: oder nur eine Shell für einen schon existierenden (z.B. Suche bei Google UPX)? :gruebel:

Im ersten Fall: viel Erfolg und gib mir ´ne Info, wenn du fertig bist! :zustimm:

Im anderen Fall brauchst du doch eigentlich nur Suche in: Delphi-Forum, Delphi-Library SHELLEXECUTE mit den passenden Parametern aufrufen. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 07.01.08 09:53 
Meinst du jetzt einen Exe-Packer, wie UPX, der die Exe kleiner macht abner trotzdem ausführbar bleibt oder willst du ein selbstentpackendes Archiv erstellen?

Zu ersterem, guck dir UPX an, das ist OpenSource zu zweiteren guck dir mal meine SFXTools an: www.michael-puff.de/...er/Delphi/Programme/
jackie05 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: Mo 07.01.08 10:09 
Danke euch für die antworten.

Also ich Programmiere zurzeit Spiele mit einer anderen Programmiersprache und möchte z.B. die Sounds, Bilder etc. in die EXE mit einpacken, so das man dann nur die Exe braucht um es zu Spielen.

Ich habe ein Tool auf meinem Rechner mit dem das ja auch geht, das nennt sich MoleBox, aber so kann ich meine Spiele dann nicht zur Download anbieten, da ich keine berechtigungen habe, weil es sich um eine Testversion handelt.

Wie könnte ich am einfachsten so ein Tool erstellen?

MfG
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 07.01.08 10:46 
user profile iconjackie05 hat folgendes geschrieben:
die Sounds, Bilder etc. in die EXE mit einpacken, so das man dann nur die Exe braucht um es zu Spielen.

Also noch was anderes. Pack die benötigten Dateien als Ressourcen in deine Exe und extrahiere sie zur Laufzeit auf die Festplatte.
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1340
Erhaltene Danke: 120

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Mo 07.01.08 11:08 
Du möchtest also nichts weiter, als nur Ressourcen die dein Programm braucht zusammen mit der Exe verpacken?
Wie soll dein Programm die Ressourcen dann finden? Sollen die vor der Verwendung extrahiert und gespeichert werden? oder direkt aus der "exe" geladen werden?
Die einfachste Möglichkeit wäre, die Daten in Ressourcen zu speichern, dann sind sie jederzeit im Programm verfügbar. Dazu brauchst du nur den Ressourceneditor deiner Programmiersprache.
Eine andere Möglichkeit wäre, das du dir selber ein Verwaltungstool schreibst mit dem du den Zugriff auf deine Ressourcen ermöglichst die du einfach hinten an deine fertig erstellte Exe, zusammen mit Verwaltungsinformationen anhängst. So habe ich das bei einigen Spielen gemacht die ich noch zu DOS-Zeiten geschrieben habe.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
Arne K.
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
EE-Autor
Beiträge: 112


C# (VS 2008 Professional)
BeitragVerfasst: Mo 07.01.08 11:54 
Falls sonst auch eine fertige Lösung relevant wäre: Genau das von dir beschriebene Verhalten bietet Software wie z.B. "Molebox".

Ist zwar kein Vergleich mit einer nativen Implementation, aber vlt. ja passend...
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 08.01.08 11:26 
user profile iconjackie05 hat folgendes geschrieben:
Ich habe ein Tool auf meinem Rechner mit dem das ja auch geht, das nennt sich MoleBox, aber so kann ich meine Spiele dann nicht zur Download anbieten, da ich keine berechtigungen habe, weil es sich um eine Testversion handelt.
...
user profile iconArne K. hat folgendes geschrieben:
Falls sonst auch eine fertige Lösung relevant wäre: Genau das von dir beschriebene Verhalten bietet Software wie z.B. "Molebox".
:lol:

Ja, zum Thema: Wenn es sich wirklich nur um Bilder und Sounds handelt, dann sind die von user profile iconLuckie angesprochenen Resourcen wohl die beste Lösung, weil es direkt Routinen gibt um diese daraus zu laden. (LoadFromResource)
Bei benutzerdefinierten Dateien ist es eventuell sinnvoller die Dateien einfach an die Exe anzuhängen. Dafür musst du nur die Exe mit einem von dir geschriebenen Tool als Stream öffnen, die anzuhängenden Daten dahinterschreiben und ans Ende Angaben wie die Größe des Anhangs etc., zu speichern.

An die Exe anhängen hat vor allem den Vorteil, dass es das Kompilieren bzw. genauer gesagt das Linken danach schneller macht, weil die Resourcen nicht in die Exe eingebunden werden müssen. Der Nachteil ist, dass dann die Daten auch nicht sofort in der Exe sind, zum Debuggen also nicht direkt beim Ausführen mit F9 zur Verfügung stehen.
Dennoch habe ich es so gemacht und Funktionen geschrieben, die nachsehen ob die Daten da sind oder nicht und ggf. einfach Testdaten zurückgeliefert haben. So konnte ich sehr schnell debuggen und wenn ich die Daten angehängt habe, waren dann auch die Bilder etc. korrekt da.
jackie05 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: Mi 09.01.08 23:40 
Danke euch für die antworten.

user profile iconLuckie wie könnte ich das als Resource hinbekommen, dass die dateien zur laufzeit extrahiert werden?
Also in Delphi 7.

Danke schonmal.

MfG
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Do 10.01.08 09:29 
In Delphi funktioniert das folgendermaßen:
Du erstellst eine rc-Datei mit dem Inhalt im Stil name RC_DATA C:\Pfad\datei.dat wobei du im Forum suchen solltest, wie genau die Datei aussehen muss und welche Bezeichner an stelle von "RC_DATA" noch benutzt werden können. Dann jagst du diese datei durch den Resourcencompiler brcc32.exe (So hieß er doch...) aus dem Delphi-Bin Verzeichnis. Daraus erhälst du eine .RES datei die du nun in deiner Unit so einbindest: {$R datei.res}. Nun kannst du im Delphi-Code per LoadFromResource oder ähnlichen Prozeduren auf die Resourcen zugreifen.

Da du aber "in einer anderen Programmiersprache" programmierst, weiß ich nicht, wie wir dir helfen sollen :nixweiss:

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
jackie05 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 357



BeitragVerfasst: Sa 12.01.08 07:48 
Danke.

Ich mache das ja mit Delphi, ich möchte nur die daten meines Spieles in die .exe einpacken, also nur die wichtigsten sachen wie z.B. Bilder, Sounds und vieleicht die levels.

Edit: Also die .exe Datei ist ja mein Spiel, das ich über Create Executable erstellt habe, nur möchte ich die Grafiken u.s.w. mit in die .exe rein packen.
Könnte das so gehen wie Du es oben beschrieben hast?

MfG
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Di 15.01.08 09:04 
Ja, wenn du dein Spiel in Delphi geschrieben hast und deinen Quellcode vorliegen hast (ausserdem brauchst du natürlich eine Version von Delphi)
Nein, wenn du dein Spiel in C++ (o.ä.) geschrieben hast und nicht in Delphi.

Meine Methode funktioniert nur, wenn du die Resourcen direkt "in die exe hinein Compilieren kannst" und dazu musst du eben den Delphi-Quelltext davon haben.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.