Hi,
da es mich die größe der AutoIT exe nervt, hab ich mir gedacht, dass es doch eh nur der Dateianfang mit ner A3X Datei ist
Also:
--> Einfach die EXE Extrahieren und A3X Code dran...
Der Code is in der Zip
Lg PCeumel
Ps: Kein UPX oder die AutoitSC.bin mit Mpress Komprimieren
Kleinere Autoit EXE´N mitliefern
-
pceumel -
27. September 2011 um 17:26
-
-
Hä ? ich versteh so gut wie nix !
-
Nicht nur du !
Wozu soll das jetzt bitte gut sein ?
Und - Was kann ich denn jetzt damit bitte bezwecken ?
Könntest ja mal ein Beispiel machen und es deutlicher definieren -
Hi,
das Script is für die leute gedacht, die z.B 10 Compilierte Exen mitgeben (Autoit programme!).
Ich nehme den Header (AutoitSC.bin) der ja sowieso mitdabei ist und Schreibe da dann den A3X code dran.
Zur Ausführung:
1. GenScript.au3 Ausführen
2. Die Datei CompileME.au3 Compilieren
3. Fertig und Freuen -
Also so ganz kapier ich auch nicht wie das gehen soll. Deine GenScript.au3 generiert eine CompileME.au3 und die CompileME.au3 eine OUT.exe.
Die Out.exe hat wiederrum diesen Code wodruch sie sich selbst versucht zu öffnen:
Spoiler anzeigen
[autoit]DIM $AUTOITEXE_BYTES=646144,$AUTOITA3X_SCRIPT=""
[/autoit]
$AUTOITA3X_SCRIPT&=BINARYTOSTRING("")
$AUTOITEXE=@SCRIPTFULLPATH
$AUTOITEXE_OPEN=FILEOPEN($AUTOITEXE)
$AUTOITEXE_READ=FILEREAD($AUTOITEXE_OPEN)
$AUTOITEXE_BINARY=STRINGTRIMRIGHT($AUTOITEXE_READ,FILEGETSIZE($AUTOITEXE)-$AUTOITEXE_BYTES)
FILECLOSE($AUTOITEXE_OPEN)
$OUT_OPEN=FILEOPEN("OUT.exe",18)
FILEWRITE($OUT_OPEN,$AUTOITEXE_BINARY&$AUTOITA3X_SCRIPT)
FILECLOSE($OUT_OPEN)Weder kann man ein Script auswählen aus dem der a3x Code generiert werden soll, noch passiert sonst irgendetwas. Erklär das bitte nochmal genauer was da passieren sollte.
-
- Offizieller Beitrag
Also ich habe mir das Skript nicht angesehen (Mache ich nie, wenn ich dazu erst was herunterladen muss! - Wozu kann man Code hier im Spoiler darstellen?!), aber der mehr als wagen Erklärung nach vermute ich Folgendes:
Jede zur Exe kompilierte au3 besteht aus Interpreter+Code. Um nicht in jeder Exe erneut den Interpreter einzubinden, wird er nur einmal verwendet und die Einzelskripte werden kaskadiert angehängt. Es werden also nicht, wie suggeriert, tatsächlich kleinere Exe'n erstellt, sondern die Exe'n werden als Einzeldatei nicht mehr ausführbar und müssen in der 'Sammlung mit Interpreter' integriert sein. Kein wirklicher Vorteil, wie ich meine.Oder interpretiere ich das jetzt falsch?
Eine detaillierte Beschreibung von Funktionen ist immer noch der beste Weg um Irritationen zu vermeiden. Und wenn 3 Leute "..äh Bahnhof?" schreien, kannst du sicher sein, dass es mit der Beschreibung nicht weit her ist.
-
Habs jetzt auch nicht ausprobiert, aber wenn man mehrere Scripte hat, reicht 1 Kompilierte Exe, von der aus die anderen Scripte gestartet werden können
[autoit]Run(@AutoItExe & ' /AutoIt3ExecuteScript Script1.au3'
[/autoit] -
Genau das ist auch was mich etwas wundert, wo die Größernersparniss ist. In seinem Beispiel ist eine Input.au3 drin mit einer Größe von 9 Byte. Die Input.a3x die dabei ist hat aber eine größe von 357 Bytes, also ca. 40mal größer.
-
Das Script soll auch nur den leuten Helfen, die gleich eine EXE brauchen (vileicht sogar mehr als 2) für z.B. eine Setup Rutine, die Autoit Files Installiert.
Da es mir zu Blöde ist (finde ich mal) Platz damit zu "Verschwenden" die Daten 5 mal mitzugeben hab ich das gemacht.
Ich hatte mal das problem, dass ich einen Dienst erstellt habe, der eine eigene Exe war, dazu noch ein Main Script und dann noch ein paar andere EXEn mit Autoit --> 5 MB Das war mir zu viel, so hab ich halt eine Installationsrutine, die mir das alles mitliefert, das geht besser als FileInstall...
Jetzt verstanden?
Lg Pceumel
Ps: Das ist extra nur eine A3X Datei, will ja auch nur zeigen , wie es geht...
@Bug: Ich mache das so:
-> Extrahiere den Interpreder
-> schreibe A3X Code dran
-> Fertig
So ist die Datei noch Ausführbar, das Setup aber Klein -
Wenn es mir auf Dateigröße ankommt, dann progge ich in mit anderen Sprache.