Unattended Installation

  • Hey Leute habe ein kleines Problem! Vielleicht kann mir jemand helfen! Ich habe Skripte erstellt und diese mit FileInstall mit der Exe Datei Compiliert! Wenn ich Sie Am laufenden System teste funktioniert alles einwandfrei! Lasse ich Sie aber über RT7 Lite mit der Windows CD beim Neu Aufsetzten des Betriebsystems laufen so kommt "XY.exe kann nicht gefunden werden". Muss ich die Original Datei nochmals mitgeben?????

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=TrueCryptIcon.ico
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

    FileInstall('C:\Users\Master\Desktop\TrueCrypt Setup 7.0a.exe',@ScriptDir & '\Temp',1)

    AutoItSetOption("TrayIconHide", 1)
    ShellExecute("TrueCrypt Setup 7.0a.exe")
    WinWaitActive("TrueCrypt Setup 7.0a")
    WinWaitActive("TrueCrypt Setup 7.0a")
    Send("{c}")
    Send("{a}")
    Send("{i}")
    Send("{n}")
    Send("{i}")
    WinWaitActive("TrueCrypt Setup","TrueCrypt has been successfully installed.")
    Send("{space}")
    WinWaitActive("TrueCrypt Setup","If you have never used TrueCrypt before, we recommend that you read the chapter Beginner's Tutorial in the TrueCrypt User Guide. Do you want to view the tutorial?")
    Send("{n}")
    Send("{f}")

    Dieses skript habe ich compilieren lassen... mit der Datei
    funktioniert super mit einem laufenden system
    aber mit r7 lite bei der Windows Installation leider nicht.... ?(
    Wo ist mein Denkfehler?

    Vielen Dank für Eure Hilfe!

    Dennis

    Einmal editiert, zuletzt von dennis9978 (4. September 2011 um 14:36)

  • Dein Denkfehler dürfte an shellexecute bzw. am nicht/falsch angegebenen Pfad liegen. Du extrahierst die TC.exe in das Unterverzeichnis "@scriptdir\Temp", also wird er diese auch nicht finden wenn du keinen Pfad dorthin angibst. Wird kein Pfad angegebn sucht die Funktion die Datei direkt im Scriptdir. Warum verwendest du überhaupt shellexecute? Das ist eigentlich dazu gedacht um bekannte Dateiformate mit den dafür definierten Standardprogrammen zu öffnen. Funktioniert zwar natürlich auch bei exe Dateien, aber ein run() würde es genauso tun.

  • Hallo misterspeed,

    danke für die schnelle Antwort.... :)
    Hm bin erst seit gestern auf AutoIT gestoßen und demnach ein frischling... habe nur geringe script Kenntnisse und demnach von anderen scritpen geschaut und kopiert und zusammengeschustert... :)
    Also würde die korrekte Form dann so aussehen?

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=TrueCryptIcon.ico
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

    FileInstall('C:\Users\Master\Desktop\TrueCrypt Setup 7.0a.exe',@ScriptDir & '\Temp',1)

    AutoItSetOption("TrayIconHide", 1)
    run("\Temp\TrueCrypt Setup 7.0a.exe")
    WinWaitActive("TrueCrypt Setup 7.0a")
    WinWaitActive("TrueCrypt Setup 7.0a")
    Send("{c}")
    Send("{a}")
    Send("{i}")
    Send("{n}")
    Send("{i}")
    WinWaitActive("TrueCrypt Setup","TrueCrypt has been successfully installed.")
    Send("{space}")
    WinWaitActive("TrueCrypt Setup","If you have never used TrueCrypt before, we recommend that you read the chapter Beginner's Tutorial in the TrueCrypt User Guide. Do you want to view the tutorial?")
    Send("{n}")
    Send("{f}")

    Vielen Dank für Deine Unterstützung

  • Sollte wohl so klappen, sicherer wäre es wohl aber das makro @scriptdir noch dazuzupacken, also exakt so wie du es auch im fileinstall hast:

    [autoit]


    run(@scriptdir & "\Temp\TrueCrypt Setup 7.0a.exe")

    [/autoit]

    Was den Rest anbelangt rate ich dir mal dazu dir die control Funktionen anzusehen und den send Kram zu ersetzen:

    [autoit]


    controlclick
    controlcommand
    controlsettext
    ;usw

    [/autoit]
  • Ok super Merci werds gleich mal ausprobieren... Hoffe es funktioniert dann in meiner RT7 Lite Winodows DVD... :)
    Tausend Dank für die Tipps

  • Liegt dein Script mit auf der RT7 DVD oder wird es von woanders gestartet? Wenn es auf der DVD mit drauf ist, dann wird FileInstall in das @ScriptDir nicht funktionieren, wel das @ScriptDir in diesem Fall die DVD ist.

  • Hm Danke für Deinen Hinweis...
    habe ich mir auch schon überlegt...

    Ist @Tempdir da besser?
    oder geht das auch nicht.

    Des weiteren bekomme ich die Scripte nicht mit run zum laufen sondern nur mit ShellExecute... :(
    Liegt das an mir oder muss ich da sonst noch was beachten?

    Vielen Dank für Eure Unterstützung.

  • #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=TrueCryptIcon.ico
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

    BlockInput(1)
    FileInstall('C:\Users\Master\Desktop\TrueCrypt Setup 7.0a.exe',@TempDir & "\TrueCrypt Setup 7.0a.exe",1)

    AutoItSetOption("TrayIconHide", 1)
    ShellExecute(@TempDir & "\TrueCrypt Setup 7.0a.exe")
    WinWaitActive("TrueCrypt Setup 7.0a", "License")
    ControlCommand("TrueCrypt Setup 7.0a", "License", "Button5", "Check")
    ControlClick("TrueCrypt Setup 7.0a", "License", 1026, "left")

    WinWaitActive("TrueCrypt Setup 7.0a", "Wizard Mode")
    ControlCommand("TrueCrypt Setup 7.0a", "Wizard Mode", "Button5", "Check")
    ControlClick("TrueCrypt Setup 7.0a", "Wizard Mode", 1026, "left")

    WinWaitActive("TrueCrypt Setup 7.0a", "Setup Options")
    ControlCommand("TrueCrypt Setup 7.0a", "Setup Options", "Button9", "UnCheck")
    ControlCommand("TrueCrypt Setup 7.0a", "Setup Options", "Button10", "UnCheck")
    ControlClick("TrueCrypt Setup 7.0a", "Setup Options", 1026, "left")

    WinWaitActive("TrueCrypt Setup", "TrueCrypt has been successfully installed.")
    ControlClick("TrueCrypt Setup", "TrueCrypt has been successfully installed.", 2, "left")

    WinWaitActive("TrueCrypt Setup", "If you have never")
    ControlClick("TrueCrypt Setup", "If you have never", 7, "left")

    WinWaitActive("TrueCrypt Setup 7.0a", "TrueCrypt Installed")
    ControlClick("TrueCrypt Setup 7.0a", "TrueCrypt Installed", 1026, "left")

    FileDelete(@TempDir & "\TrueCrypt Setup 7.0a.exe")
    BlockInput(0)

  • Das Blockinput solltest du rausnehmen. Braucht man eigentlich nur wenn man mit send() oder auch mousemove() / mouseclick() arbeitet. Da du das ja nun alles schön durch control Funktionen ersetzt hast sollte kein Bedarf mehr für blockinput() bestehen.
    Ich persönlich würde es als unschön erachten wenn ich ggf. minutenlang die Maus und Tastatur nicht verwenden kann. Gerade wenn dein script in den winwait Funktionen hängenbleibt könnte das ein ernstes Problem werden.