Zwei in eins?


2006-09-03 20:40 #1
Wäre es rein technisch möglich, beim finalen Release die aktuell zwei
Dateien (Gameofrobot.exe und Worldofrobot.dll) in eine einzige exe-Datei
zu kompilieren?
Ich fände es smart, wenn Robot nur aus einer einzelnen Datei bestehen
würde! (Abgesehen von einem Readme- und License-File natürlich.)---
Webmaster Game-of-Robot.de
Webmaster Prince of Persia World (http://www.princeofpersiaworld.com)

Game-of-Robot.de

2006-09-03 21:23 #2
Das ist nun gar kein Problem. Mit Ausnahme einer Mini-Routine zur Versions-Prüfung enthält die DLL nur Ressourcen, die ich auch genauso gut in die EXE einbinden kann.
Für die Distribution ändert sich da natürlich wenig, nur dass eben eine Datei weniger installiert wird. Für die Mitnahme auf einem Stick ist das natürlich wirklich nicht ganz uninteressant.
Muss da 'mal ein paar Dinge prüfen...😉

waiting www.tom-productions.de - www.tofahrn-foto.de - www.tofahrn.de

2006-09-03 23:53 #3
Hatte ich mir schon gedacht, kann man prima als zusätzlichen Compile-Target definieren: Neu V0.99RC37

waiting www.tom-productions.de - www.tofahrn-foto.de - www.tofahrn.de

2006-09-04 06:45 #4
Absolut genial! So hab ich mir das immer gewünscht!
Von mir aus brauchst du die gesplitteten Dateien nicht mehr zum Download anbieten.
Ist so viel bequemer! Vor allem ist die exe sogar etwas kleiner als
die beiden früheren Dateien zusammen, juhuu! Fehlt wohl jetzt der Overhead, was?
Oder, wenn du daran hängst, setze die Single-Binary wenigstens an
erste Stelle und die anderen Dateien nur noch als Alternative.
Wobei die gesplitteten Dateien für mich keine Vorteile bringen,
abgesehen davon, dass man die einzelne exe nicht mehr auf eine 1,44"-Diskette bekommt,
ohne sie zu packen. Aber das dürfte im Zeitalter von USB-Sticks zweitrangig
sein. Wer in seinen Rechner Daten nur über ein Diskettenlaufwerk
bekommt, sollte sich sowieso die DOS-Versionen holen. 😉
Quote:
Für die Distribution ändert sich da natürlich wenig
Wieso? Es wäre doch genial, wenn man nur die eine exe-Datei benötigen würde.
Man könnte komplett auf einen Installer verzichten. Oder gibt es da
noch einen Haken?
---
Webmaster Game-of-Robot.de
Webmaster Prince of Persia World (http://www.princeofpersiaworld.com)

Game-of-Robot.de

2006-09-04 10:57 #5
Quote:
Vor allem ist die exe sogar etwas kleiner als die beiden früheren Dateien zusammen, juhuu! Fehlt wohl jetzt der Overhead, was?
Genau, einmal dieses Mini-DOS-Programm, welches sagt, dass die EXE nur unter Windows ausgeführt werden kann (genau, das ist wegen dem einheitlichen Datei-Format auch in jeder DLL und jedem Font drin), und dann natürlich ein paar weitere Info-Strukturen, welche die Eigenschaften der Datei definieren. Da kommen schon ein paar kB zusammen...
Quote:
Oder, wenn du daran hängst, setze die Single-Binary wenigstens an
erste Stelle und die anderen Dateien nur noch als Alternative.
Ok, kein Problem.
Quote:
Wobei die gesplitteten Dateien für mich keine Vorteile bringen, abgesehen davon, dass man die einzelne exe nicht mehr auf eine 1,44"-Diskette bekommt, ohne sie zu packen.
Es hindert Dich ja niemand daran, die EXE per upx -9 (http://upx.sourceforge.net/) auf ein einziges MB zu schrumpfen...😉
Quote:
Wieso? Es wäre doch genial, wenn man nur die eine exe-Datei benötigen würde. Man könnte komplett auf einen Installer verzichten. Oder gibt es da noch einen Haken?
Nunja, viele wünschen sich eben einen Installer, der auch gleich Menü-Einträge produziert. Dieser braucht dann Windows-konform zusätzlich noch einen Uninstaller. Und juristisch ist die Lizenz-Datei unverzichtbar und die Readme-Datei ist natürlich auch mehr als nett.
Für den Normal-User ändert sich folglich gar nichts, nur dass eben eine Datei weniger kopiert wird.

waiting www.tom-productions.de - www.tofahrn-foto.de - www.tofahrn.de

2006-09-04 11:18 #6
Ok, das bleibt es beim Installer.
Vielleicht kannst du dann aber ja trotzdem noch für Puristen auch die
single Binary zum Download anbieten...
Quote:
Es hindert Dich ja niemand daran, die EXE per upx -9 auf ein einziges MB zu schrumpfen...
Sogar ganz knapp weniger als 1 MB. 😃
Warum verwendest du upx nicht, steht doch glaub unter GNU, aber wie
das beim deployen von kommerziellen Produkten ist, weiß ich nicht.
Sag mal, schreibt der eigentlich die komplette exe um, oder entpackt
der das Ding vorher wieder sauschnell?
---
Webmaster Game-of-Robot.de
Webmaster Prince of Persia World (http://www.princeofpersiaworld.com)

Game-of-Robot.de

2006-09-04 11:41 #7
Quote:
Ok, das bleibt es beim Installer.
Sowieso, nervt mich ja manchmal selber, bei kleinen GUI-Tools keinen Installer zu bekommen, sondern sich die Vernüpfungen selber basteln zu müssen...😉
Quote:
Vielleicht kannst du dann aber ja trotzdem noch für Puristen auch die single Binary zum Download anbieten...
Klar, spätestens im Beta-Bereich wird sie wohl dauerhaft bleiben.
Quote:
Warum verwendest du upx nicht, steht doch glaub unter GNU, aber die das beim deployen von kommerziellen Produkten ist, weiß ich nicht.
Eben, die ganzen xxGPLs zu studieren ist mir einfach zu heftig, auch wenn schon im Intro-Text hierzu ein ziemlich präzises Statement abgegeben wird:
Quote:
UPX is copyrighted software distributed under the terms of the GNU General Public License, with special exceptions granting the free usage for commercial programs as stated in the UPX License Agreement.
Und sowohl der Installer als auch ZIP komprimieren ja auch, sodass es für den Download kaum eine Rolle spielt. Und die paar kB Installation mehr auf der Platte, interessiert heute doch wirklich kaum jemanden, oder?
Quote:
Sag mal, schreibt der eigentlich die komplette exe um, oder entpackt der das Ding vorher wieder sauschnell?
Die komplette EXE schreibt der sicherlich nicht um. Vom Ansatz her würde ich behaupten, dass der ausführbare Code und die restlichen Ressourcen gepackt und als neuer Ressourcen-Satz an eine Mini-aber-Standard-Windows-Applikation gebunden wird. Diese Mini-Applikation entpackt die Code-Ressource im Speicher und modifiziert den Jumptable der Applikation und ersetzt alle Ressourcen-Funktionen mit eigenen, welche eben zur Laufzeit die Ressourcen dekomprimieren. Letzteres ist auch nicht wirklich schlimm, da die generischen Ressource-Funktionen nichts anderes machen, als die Ressourcen einfach in den Speicher zu laden.
Das Basis-Knowhow steckt hier sicher in dem Code-Compressor, der, ähnlich wie zu DOS-Zeiten LzExe, den Intel-Code deutlich besser packen kann, als allgemeine Kompressions-Programme, wie z.B. WinZip.

waiting www.tom-productions.de - www.tofahrn-foto.de - www.tofahrn.de

2006-09-04 12:10 #8
Ok, wir sind inzwischen voll offtopic. Trotzdem...
Schon genial wie der upx packt. Eine 16 MB Spiele-exe komprimiert
der runter auf 7 MB. Echt krass. Nur mit self-extracting archives hat
er's nicht so. Dabei wollte ich doch so gerne meine
Flight Simulator X-Demo-Installer-exe kleiner machen. Die ist nämlich 650 MB groß...---
Webmaster Game-of-Robot.de
Webmaster Prince of Persia World (http://www.princeofpersiaworld.com)

Game-of-Robot.de