Ist es möglich aus einem Autoitexefile heraus ein au3.script zu compilieren?
Da beim compilieren einer au3 jedesmal autoit selbst mit eingebaut wird(soweit ich weiß), müsste es dafür doch eine Möglichkeit geben.
compile au3
-
- [ offen ]
-
Vollnoob -
7. November 2007 um 08:47 -
Geschlossen -
Erledigt
-
-
hiho :]
das heißt dann aber "decompilen" und ist bei autoit seit ein paar versionen nicht mehr möglich.
ALte versionen kannst du mit exe2au3 "decompilen", brauchst du aber ein Passwort, wenn eines gesetzt wurde.Mfg
=)
-
ne, missverstanden ich will eine au3 mit meinem exefile compilieren, und zwar auf einem rechner, auf dem kein Autoit installiert ist. :party4:
i wü a aodrää mit määm äxäfääil compilian, und zwoa of am Rechnaa, of dem ka Otoit instaliat is.
Habs mal in Wienerisch versucht, kann mans verstehen? is echt nicht einfach so zu schreiben -
- Offizieller Beitrag
HI,
versuch doch mal die Exe zu FileInstallen und dann dabei zu compilieren.
So long,
Mega
-
Entweder hab ich mich wieder falsch ausgedrückt, oder ich kann deinen Gedanken nicht ganz folgen.
was ich bauen möchte ist ein Programm, das mit hilfe der Eingaben in eine GUI eine andere exe bauen soll.
ungefähr so:
[autoit]$server = GUICtrlRead($inputse)
[/autoit][autoit][/autoit][autoit][/autoit][autoit]
$nickname = GUICtrlRead($inputnn)
$loginname = GUICtrlRead($inputln)
$password = GUICtrlRead($inputpw)FileWriteLine($nickname&".au3","run ('C:\Programme\Teamspeak2_RC2\TeamSpeak.exe "&$server&"?nickname="&$nickname&"?loginname="&$loginname&"?password="&$password&"')")
[/autoit][autoit][/autoit][autoit];~ compile --> $nichname.au3
[/autoit][autoit][/autoit][autoit]FileDelete($nickname&".au3")
[/autoit] -
- Offizieller Beitrag
Hi,
ist doch ok. Ich meinte du nimmst dir die exe von Autoit die zum Compile nötig ist und entpackst diese ins tempVerzeichnis. Anschließend übergibst du dieser exe dein au3 File und löscht die exe wieder.
Nur als Idee.
So long,
Mega
-
ah, jetzt hab ich dich, danke!
-
jo nur wie kann man dieser aut2exe.exe die daten einflößen ohne den exe internen gui aufzurufen
also ich mein du machst deinen eigenen gui, der nutzer gibt ein was compiled werden soll und wohin vllt noch wie stark comprimiert werden soll.
dann startet dieser gui beim click auf "compile" die aut2exe.exe und soll die daten einspeisen nur wir?glaub damit hab ich deine nächste frage getroffen vollnoob oder?
-
habs ez mal proffesorisch so versucht. funzt leider nicht.
ich krieg ne FehlermeldungSpoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$gui = GUICreate(@ScriptName, 281, 171, 265, 149)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$Label1 = GUICtrlCreateLabel("Server:", 8, 16, 46, 17)
$Label2 = GUICtrlCreateLabel("Nickname:", 8, 48, 63, 17)
$Label3 = GUICtrlCreateLabel("Loginname:", 8, 80, 59, 17)
$Label4 = GUICtrlCreateLabel("Password:", 8, 112, 61, 17)
$Inputse = GUICtrlCreateInput("afo.ath.cx:8767", 72, 8, 201, 21)
$inputnn = GUICtrlCreateInput("", 72, 40, 201, 21)
$Inputln = GUICtrlCreateInput("", 72, 72, 201, 21)
$Inputpw = GUICtrlCreateInput("", 72, 104, 201, 21, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL))
$okButton = GUICtrlCreateButton("OK", 8, 137, 267, 25, 0)
GUISetState(@SW_SHOW)While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $okButton
FileInstall("C:\Programme\AutoIt3\Aut2Exe\Aut2exe.exe","Aut2exe.exe")
$server = GUICtrlRead($inputse)
$nickname = GUICtrlRead($inputnn)
$loginname = GUICtrlRead($inputln)
$password = GUICtrlRead($inputpw)
$filename = ($nickname&".au3")
FileWriteLine($filename,"run ('C:\Programme\Teamspeak2_RC2\TeamSpeak.exe "&$server&"?nickname="&$nickname&"?loginname="&$loginname&"?password="&$password&"')")
run ("Aut2exe.exe /in <$filename>")
FileDelete($filename)
FileDelete("Aut2exe.exe")
exit
EndSwitch
WEnd -
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
$source = FileOpenDialog("Select source",@ScriptDir & "\","Autoit Script (*.au3)")$target = FileSaveDialog("Save exe",@scriptdir&"\","Executable (*.exe)")
[/autoit] [autoit][/autoit] [autoit]$attr = inputbox("Compression","Compression type in 1 for Low 2 for Normal 3 for High")
[/autoit] [autoit][/autoit] [autoit]$icon = FileOpenDialog("Icon",@ScriptDir&"\","Icon (*.ico)")
[/autoit] [autoit][/autoit] [autoit]$sArgs = ' /in "' & $source & '" /out "' & $target & '".exe /icon "' & $icon & '" /comp '&$attr&' '
[/autoit] [autoit][/autoit] [autoit][/autoit]
$sArgs &= "/nodecompile "
$Aut2Exe = FileOpenDialog("Select compiler",@scriptdir&"\","Compiler (Aut2Exe.exe)")
RunWait($Aut2Exe & $sArgs)
msgbox(0,"Success","File is now compiled ")so geht es kannst ja anstelle vin den fileopeninput en guicrtlread nehmen dann müsst es passen
-
[Blockierte Grafik: http://img99.imageshack.us/img99/4286/neubitmapje8.jpg]
-
- Offizieller Beitrag
Die Datei braucht er auch...
In deinem Falls wäre allerdings eine Ini für die Konfiguration doch hundert mal leichter und weniger auwändig :O.peethebee
-
Zitat
In deinem Falls wäre allerdings eine Ini für die Konfiguration doch hundert mal leichter und weniger auwändig rotes Gesicht .wie soll man denn das verstehen? wie meinst du das mit der ini?
das der gui ne ini schreibt like.au3.ini ?
liest der compiler den file automatisch aus?bzw mach doch einfach nen header in dein script wie:
#Region
#AutoIt3Wrapper_icon=D:\*.ico
#AutoIt3Wrapper_Compression=4 ;1,2,3,4,5
#AutoIt3Wrapper_UseAnsi=y ; n
#AutoIt3Wrapper_Res_Comment=nich ma ansatzweise fertig
#AutoIt3Wrapper_Res_Description=weils gerad fun macht
#AutoIt3Wrapper_Res_Fileversion=0.1 Beta ;??
#AutoIt3Wrapper_Res_LegalCopyright=Azunai
#AutoIt3Wrapper_Res_Language=1031 ;english
#EndRegion -
- Offizieller Beitrag
ZitatDie Daten einmalig eingeben lassen, dann in einer Ini-Datei speichern und schon kann jeder das Programm mit seinen Account-Daten nutzen, weil das gleiche Skript immer die eigene Ini ausliest.
peethebee
-
ach so war das gemeint, ich glaub das das mit ts aber nur ein beispiel war oder?
naja meine frage:
wenn man mit meinem script oben compilen will kommt ja der fehler mit der AutiItSC.bin,
wenn diese datei jedoch im selben ordner wie die Aut2Exe liegt kommt die selbe fehlermeldungnoch ein commandline parameter den ich nicht kenne=?
-
Zitat
Original von peethebee
Die Daten einmalig eingeben lassen, dann in einer Ini-Datei speichern und schon kann jeder das Programm mit seinen Account-Daten nutzen, weil das gleiche Skript immer die eigene Ini ausliest.
peethebee
so, oder ähnlich hatte ich das schon mal.
man kann das pw ja verschlüsselt spechern.Aber genau das möchte ich nicht.
ich möchte mit meinem Programm direkt einzelne exedateien erstellen können. -
- Offizieller Beitrag
Wieso sollte man die unsinnigste Lösung verwenden? Es ist genau so sicher übrigens...
peethebee
-
es geht ja nicht nur um dieses script
wäre doch praktisch ein script überallhin mitnehmen zu können das auf befehl ein neues script compiled ohne erst autoit installen zu können -
so funzts
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]$gui = GUICreate(@ScriptName, 281, 171, 265, 149)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$Label1 = GUICtrlCreateLabel("Server:", 8, 16, 46, 17)
$Label2 = GUICtrlCreateLabel("Nickname:", 8, 48, 63, 17)
$Label3 = GUICtrlCreateLabel("Loginname:", 8, 80, 59, 17)
$Label4 = GUICtrlCreateLabel("Password:", 8, 112, 61, 17)
$Inputse = GUICtrlCreateInput("", 72, 8, 201, 21)
$inputnn = GUICtrlCreateInput("", 72, 40, 201, 21)
$Inputln = GUICtrlCreateInput("", 72, 72, 201, 21)
$Inputpw = GUICtrlCreateInput("", 72, 104, 201, 21, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL))
$okButton = GUICtrlCreateButton("OK", 8, 137, 267, 25, 0)
GUISetState(@SW_SHOW)While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $okButton
FileInstall("C:\Programme\AutoIt3\Aut2Exe\Aut2exe.exe","Aut2exe.exe")
FileInstall("C:\Programme\AutoIt3\Aut2Exe\AutoItASC.bin","AutoItASC.bin")
FileInstall("C:\Programme\AutoIt3\Aut2Exe\upx.exe","upx.exe")
$server = GUICtrlRead($inputse)
$nickname = GUICtrlRead($inputnn)
$loginname = GUICtrlRead($inputln)
$password = GUICtrlRead($inputpw)
$filename = ($nickname&".au3")
FileWriteLine($filename,"run ('C:\Programme\Teamspeak2_RC2\TeamSpeak.exe "&$server&"?nickname="&$nickname&"?loginname="&$loginname&"?password="&$password&"')")
runwait ("Aut2exe.exe /in "&$filename)
FileDelete($filename)
FileDelete("upx.exe")
FileDelete("AutoItASC.bin")
FileDelete("Aut2exe.exe")
exit
EndSwitch
WEnd -
rofl vllt sollte die fehlermeldung mal geändert werden wenn du die files:
aut3exe,upx,AutoitSC.bin hats kommt die meldung ,dass AutoitSC.bin fehlt
aber in wirklichkeit fehlt AutoitASC.binfreaky
-