Frage zu include bei nicht kompilierung

  • Hallo Forum,

    bin von Kixtart auf autoit umgestiegen und habe ein logon script auf autoit umgeschrieben. Wenn ich dieses script nun in das sysvol kopiere, welche Dateien müssen dorthin kopiert werden. Mir geht es um die include Datein. Möchte das Script nicht kompilieren, um schnell Änderungen im Script durchführen zu können.

    Schon mal Danke für eure Hilfe

  • Es kommt ganz darauf an was für includes du verwendest.

    Includes mit die <> eingebunden werden, liegen im AutoIt-Include Verzeichnis und müssen nicht mitverschoben werden.
    Includes die mit "" eingebunden sind und im Scriptordner liegen müssen mitverschoben werden.

    Du kannst aber auch die Includes im Scriptordner ins AutoIt verzeichnis schieben, sie mit <> einbinden und dann nur das Script verschieben.

    Alternativ kannst du auch eine Verknüpfung vom Script ins Sysvol kopieren und das Working-Directory im Scriptordner lassen und so das ganze ausführen.

  • Hallo Paddy75

    Dateien mit der Endung .au3 sind quasi der Quellcode.
    Anders als bei .cmd Dateien (vormals Batchdateien) startet man eine .au3 Datei nicht direkt. Bei .cmd erledigt das z.B. der Kommandozeileninterpreter cmd.exe von Windows.

    Du kannst die .au3-Datei aber aus dem Editor (i.d.R.) Scite heraus starten mittels [Tools]->[Go] oder F5.
    Möchtest Du ein Skript direkt starten, dann muss es 'kompiliert' werden. Kompilieren bedeutet bei AutoIt,
    dass eine .exe erstellt wird, die das Skript, Includes und den ausführenden Interpreter enthält.

    Die Includes kannst Du im Header des Skriptes angeben.
    Befinden sie sich im Standardverzeichnis ..\AutoIt3\Include, dann lautet die Syntax z.B. :
    #include <Array.au3>
    Du kannst eigene Includes dorthin kopieren. Alternativ kann man Includes auch aus beliebigen Verzeichnissen einbinden, dann ist die Syntax :
    #include "[path\]filename"

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Die Frage ob includes per <> oder "" eingebunden werden ist lediglich eine Frage der Suchreihenfolge.
    Bei <> wird in folgenden Verzeichnissen nach der zu includenden Datei gesucht: AutoIt-Include-Verzeichnis -- Benutzerdefiniertes Standard-Include-Verzeichnis -- Skriptverzeichnis.
    Bei "" ist die Reihenfolge umgekehrt.

    Man kann also eine Datei mit beiden Varianten includen - egal ob es sich um eine von AutoIt mitgelieferte UDF handelt oder um eine eigene im Skriptverzeichnis.

    Die Frage ist also eigentlich - wie alpines schon schrieb - Handelt es sich um eine von AutoIt mitgelieferte Datei (z.B. die Array.au3) oder um eine externe die du includen willst.
    Ist sie von AutoIt mitgeliefert brauchst du nichts mitkopieren. Die Datei wird ja im AutoIt-Include-Verzeichnis gefunden.
    Ist es eine externe dann muss sie mitkopiert werden oder alternativ der Pfad dazu mit angegeben werden.

  • Ich vermute mal, da er das als Logon-Script nutzen will - soll es für alle / viele Benutzer ausgeführt werden.

    Dann müsste auf allen Rechnern der Benutzer auch Autoit installiert sein - sonst weiß deren rechner nicht was eine .au3 Datei ist.
    Bei Kixtart hat man die Runtime einfach dazu kopiert.

    Komplizierte Lösung: Du kopierst die AutoIt-Runtime und alle Include-Skripte auch nach Netlogon, die Includes stellst du alle um auf ""
    Der Aufruf für die Benutzer muss ähnlich wie bei Kixtart mit "autoit3.exe deinskript.au3" erfolgen, ggf. mit Pfaden

    Einfache Lösung: Du kompilierst das Skript einfach (machst eine .exe daraus). Das Ding ist dann komplett allein für sich lauffähig ohne irgendwelche Voraussetzungen auf den Clients.
    Den Quellcode kannst du ja auch im Netlogon ablegen - und lässt die .exe auch nach dorthin erzeugen. So kannst du von deinem Admin-PC es schnell ändern.

  • Hallo @BLinz, und @paddy75,

    Einfache Lösung: Du kompilierst das Skript einfach (machst eine .exe daraus). Das Ding ist dann komplett allein für sich lauffähig ohne irgendwelche Voraussetzungen auf den Clients.
    Den Quellcode kannst du ja auch im Netlogon ablegen - und lässt die .exe auch nach dorthin erzeugen. So kannst du von deinem Admin-PC es schnell ändern.

    Das mag ich so nicht als einfache Möglichkeit stehen lassen. Du kannst auch das Skript bei dir kompilieren nachdem du in der ersten Zeile folgendes eingefügt hast:

    AutoIt
    #AutoIt3Wrapper_Run_Au3Stripper=y


    Dadurch wird eine Skriptdatei inklusive aller inkludierten Dateien erzeugt.
    Dazu benötigst du nur noch die AutoIt3.exe.

    GrooveLoad, ein Programm aus dem Forum, dass ich früher gern genutzt habe, konnte man mit einer vbs-Datei laden, weil der Autor es gar nicht kompiliert angeboten hat.
    (Hier liegen beide Dateien - das Skript und die AutoIt3.exe in einem Unterordner des vbs Skripts (mit unterem Inhalt) namens "Unterordner").

    Code
    sPath = Replace(WScript.ScriptFullName ,WScript.ScriptName, vbNullString)
    set shell = CreateObject("WScript.Shell")
    shell.run """" & sPath & "Unterordner\AutoIt3.exe """"" & sPath & "Unterordner\Skript.au3"""

    Mit dieser vbs Datei könnte man das Skript per doppelklick laden. Nach dem Muster könnte man das Skript aber auch einfach aufrufen ;)

    Grüße autoiter

  • Hallo @BLinz, und @paddy75,

    Das mag ich so nicht als einfache Möglichkeit stehen lassen. Du kannst auch das Skript bei dir kompilieren nachdem du in der ersten Zeile folgendes eingefügt hast:

    AutoIt
    #AutoIt3Wrapper_Run_Au3Stripper=y

    Dadurch wird eine Skriptdatei inklusive aller inkludierten Dateien erzeugt.
    Dazu benötigst du nur noch die AutoIt3.exe.

    Mhh, gerade mal getestet.
    Stimmt, die "_stripped.au3" die erzeugt wird hat dann alles drin. Sieht zwar nicht mehr so schön aus, wäre aber eine Version die ohne Includes auskommt.
    Wieder etwas gelernt

  • Stimmt, die "_stripped.au3" die erzeugt wird hat dann alles drin. Sieht zwar nicht mehr so schön aus, wäre aber eine Version die ohne Includes auskommt.

    Wenn alles noch wie im Original-Skript aussehen soll, kannst du auch aus der "_stripped.au3" den Bereich, in dem das eigentliche Skript steht, herauslöschen. Danach bindest du die Datei als include in das Original-Skript ein (statt den eigentlichen includes). So lange keine neuen includes notwendig sind funktioniert das und dein Skript sieht wie gewohnt aus.

    Grüße autoiter

    • Offizieller Beitrag

    Dann müsste auf allen Rechnern der Benutzer auch Autoit installiert sein - sonst weiß deren rechner nicht was eine .au3 Datei ist.

    Werft mal einen Blick in die Hilfe. AutoIt -Dateien /-Codezeilen lassen sich unabhängig von einem installierten AutoIt ausführen. Es braucht dazu nur eine beliebige AutoItdatei, die zur *.exe kompiliert wurde. Diese lässt sich dann verwenden um *.au3 zu interpretieren. In diesem Falle müssten aber alle zu includierenden Dateien mitgeliefert werden