compile au3

  • 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.

  • 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 ;)

    2 Mal editiert, zuletzt von Vollnoob (7. November 2007 um 09:41)

  • 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)
    $nickname = GUICtrlRead($inputnn)
    $loginname = GUICtrlRead($inputln)
    $password = GUICtrlRead($inputpw)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    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]
  • 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 Fehlermeldung

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $gui = GUICreate(@ScriptName, 281, 171, 265, 149)
    $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)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $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

    [/autoit]
  • Spoiler anzeigen
    [autoit]


    $source = FileOpenDialog("Select source",@ScriptDir & "\","Autoit Script (*.au3)")

    [/autoit] [autoit][/autoit] [autoit]

    $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&' '
    $sArgs &= "/nodecompile "
    $Aut2Exe = FileOpenDialog("Select compiler",@scriptdir&"\","Compiler (Aut2Exe.exe)")
    RunWait($Aut2Exe & $sArgs)
    msgbox(0,"Success","File is now compiled ;) ")

    [/autoit] [autoit][/autoit] [autoit][/autoit]


    so geht es ;) kannst ja anstelle vin den fileopeninput en guicrtlread nehmen dann müsst es passen ;)

  • 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
    Zitat
    Code
    run ('C:\Programme\Teamspeak2_RC2\TeamSpeak.exe "&$server&"?nickname="&$nickname&"?loginname="&$loginname&"?password="&$password&"')")

    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

  • 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 fehlermeldung ;)

    noch 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.

  • 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)
    $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)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $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

    [/autoit]

    2 Mal editiert, zuletzt von Vollnoob (7. November 2007 um 15:03)

  • 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.bin

    freaky ;)