als Script funktionierts, aber als .exe nur zum Teil

  • Vielleicht kennt das ja auch schon jemand von euch und kann mir so weiter helfen OHNE dass ich ein funktionierendes reproduzierendes Beispielscript anfertigen muss.

    Ich habe 2 Scripte. Script 1 ist das Hauptprogramm mit einem Button, über den ich das 2. Script (dann als .exe) starte. Dieses 2. Script wartet auf Nutzereingaben. Wenn ich dann auf "okay" klicke, soll mit diesen Daten eine neue Exe Datei erstellt werden.
    Das funktioniert per Komandozeilenaufruf des Compilers.

    Beispielscript


    Wenn ich das ganze via SciTE ausführe (per F5) funktioniert es wunderbar. Die neue .exe wird erfolgreich erstellt.
    ABER: Sobald ich das ganze im compilierten Zustand versuche funktioniert dieser Aufruf scheinbar nicht mehr bzw wird ignoriert. Alles andere im Script wird dargestellt und funktioniert.

    Nach dieser Codezeile frage ich ab, ob die neue .exe existiert. Jetzt kommt das aberwitzige:
    wenn die .exe BEREITS VORHANDEN ist und ich erstelle eine neue mit selben Namen im compiliertem Zustand, DANN klappt es komischerweise.
    Lösche ich diese Datei und versuche es erneut, dann klappts wieder nicht.

    Bin mittlerweile genervt, weil ich nicht mehr weiter weiss.

    Edit: Beispielscript hinzugefügt
    alles sensible entfernt, sonst ist alles gleich

  • Ohne dein vollständiges oder zumindestens ein Testscript mit selbem Fehlverhalten kann man nur raten. Ich tippe aber mal auf deinen Virenscanner. Alternativ könnte evtl. auch der Pfad zum Compiler falsch sein, aber du zeigst uns ja leider nicht wie dieser zustande kommt. Vermutlich verwendest du Autoit Makros für den Pfad, welche unterschiedliche Ausgaben haben wenn das Script kompiliert oder nicht kompiliert ist.

  • Genau das wars. Danke @misterspeed. Jetzt muss ich zugeben, dass ich mir das Makro nicht näher in der Hilfe angesehen habe. Ich ging davon aus, dass es damit keine Probleme geben würde.
    Irgendwie macht diese Sache das Makro eigentlich nutzlos, oder?

    hab das jetzt über RegRead gelöst.

    Warum ich das ganze immer noch auf diese Weise erledige? Weil ich schon (für meine Begriffe) zu viel Zeit da reingesteckt habe, als dass ich jetzt nochmal das ganze System umschreiben möchte.
    Sicher hast du Recht mit deinem Vorschlag, den du mir im anderen Thread gemacht hast. Das würde sicher funktionieren. habe selber auch zuerst über ein Token System nachgedacht, liess es aber
    dann doch fallen, weil mir das zu kompliziert erschien. So, wie ich das bis jetzt habe, funktioniert mein userhandling genau wie ich will (im Grossen und Ganzen jedenfalls xD ).

  • Was heißt nutzlos? Das Makro gibt dir den Pfad zum Interpreter. Im kompilierten Zustand ist der Interpreter nunmal die EXE selbst, andernfalls wären Autoitscripte nur lauffähig wenn Autoit auf dem System installiert ist (vergleichbar mit JAVA). Und ja deine kompilierte EXE kann auch als Interpreter für externe AU3 Dateien missbraucht werden, das Makro ist also durchaus nützlich in bestimmten Anwendungsfällen.

    Einmal editiert, zuletzt von misterspeed (27. Februar 2016 um 07:36)