Simples 7-zip Installationsskript reagiert nicht

  • Hey ich bin was AutoIt angeht leider blutiger Anfänger (nicht aber was die meisten anderen Programmiersprachen angeht^^) und ich hab den üblichen Anfänger-sitzt-auf-dem-Schlauch Fehler. Hoffe ihr helft mir :)
    Problem: Ich möchte ein Skript für mich schreiben das einen Haufen Programme automatisch installiert, da diese auf einer größeren Anzahl von PCs laufen sollen. Hier ist mein Vorläufiges Skript für die neuste Version von 7-zip x64.

    [autoit]

    MsgBox(0,"1","Dies ist die erste Stelle")
    RunWait("msiexec /i C:\Users\xxx\Desktop\7z920-x64.msi")
    WinWaitActive("7-Zip 9.20 (x64 edition) Setup")
    MsgBox(0,"2","Dies ist die zweiteStelle")
    ControlClick("7-Zip 9.20 (x64 edition) Setup","&Next","180")
    ControlClick("7-Zip 9.20 (x64 edition) Setup","&Next","Button1")
    MsgBox(0,"3","Dies ist die dritte Stelle")
    Send("!n")

    [/autoit]

    Die MsgBoxen sind nur zum Testen da. Anscheinend kommt er immer nur bis RunWait, da die Boxen danach nie erscheinen. Der Installer erscheint aber. Wo ist also der Fehler?
    Und nun meine 2. allgemeinere Frage: Ich möchte ja eine Reihe von Programmen installieren, bei denen zum Teil neu gestartet werden muss. Ist es möglich das ein Skript über einen Neustart hinweg weiterläuft?

  • RunWait wartet auf das Ende des aufgerufenen Programms.
    Daher wartet Dein Script bis msiexec fertig ist. Dass willst Du aber gar nicht.
    Daher nimm einfach Run ;)

    zu 2: dazu musst Du Dein Script am Besten in den RegKey RunOnce legen.
    Beim nächsten Start startet das Script einmal ;)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Ok vielen Dank Schnuffel! Das hat schonmal sehr geholfen. Jetzt geht es besser. Ich hatte gedacht das wait bedeutet nur er wartet bis das Fenster bereit für Eingaben ist. Gibt es denn dann auch einen Befehl dafür? Denn ich will ja nicht immer per sleep() die Zeit abschätzen müssen.

  • [autoit]

    WinWait

    [/autoit]

    Kann dir morgen auch mal mein 7-zip Installationsscript Posten. Das hab ich allerdings auf der Arbeit liegen, deshalb erst morgen.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Wunderbar! Ich habe das Skript schon fast fertig. Jetzt wollte ich es noch allgemeiner machen. Sprich die Pfade und so weiter in Variablen speichern,. Doch dabei gibt es ein Problem:

    Code
    Run("msiexec /i C:\Users\Vorname Nachname\Desktop\7z920-x64.msi")


    Das entsteht aus:

    Code
    $runcommand = "msiexec /i " & $exepath7zip
    $exepath7zip = "C:\Users\Vorname Nachname\Desktop\7z920-x64.msi"


    Aber es funktoniert leider nicht. Also normalerweise liegt das Skript im gleichen Verzeichniss wie das Programm, dann kann ich den Pfad weglassen und es geht. Aber das soll halt nicht immer so sein... freue mich über Hilfe, da google leider nichts ausgespuckt hat.
    PS die Variablen sind anders herum

  • Hier, so ist es bei uns im Einsatz ganz ohne ControlClick weil bei so simplem Setup schlicht unnötige "Arbeit":

    Spoiler anzeigen
    [autoit]

    BlockInput(1)
    Opt("WinWaitDelay",100)
    Opt("WinTitleMatchMode",4)
    Opt("WinDetectHiddenText",1)
    Opt("MouseCoordMode",0)
    RunAs("XXXX","XXX","XXXX",0,"\\XXX.XXX.XXX.X\ProgrammeAutoit$\7-Zip v465\7z465.exe")
    WinWait("7-Zip 4.65 Setup ","Choose Install Locat")
    If Not WinActive("7-Zip 4.65 Setup ","Choose Install Locat") Then WinActivate("7-Zip 4.65 Setup ","Choose Install Locat")
    WinWaitActive("7-Zip 4.65 Setup ","Choose Install Locat")
    sleep(100)
    Send("{ENTER}")
    WinWait("7-Zip 4.65 Setup ","Completing the 7-Zip")
    If Not WinActive("7-Zip 4.65 Setup ","Completing the 7-Zip") Then WinActivate("7-Zip 4.65 Setup ","Completing the 7-Zip")
    WinWaitActive("7-Zip 4.65 Setup ","Completing the 7-Zip")
    sleep(100)
    Send("{ENTER}")
    BlockInput(0)

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.