Script soll warten bis installation fertig ist

  • Hi Leute,
    ich schreibe mir gerade nen Software Selector. Jetzt habe ich das Problem, wenn ich mehrere Programme auswähle, diese alle gleichzeitig starten wollen. Habs mal mit ShellExecuteWait gemacht. Da installiert er mir aber nur ein Programm und gehts nicht mehr weiter.

    Hier ist mein Code:

    [autoit]


    For $b=1 To $zaehler
    $install_file = $install_pfad & $software_array[$b]
    ShellExecuteWait($install_file)
    Next

    [/autoit]

    Die Programme, welche ich installieren will, wurden alle mit Autoit so bearbeitet, dass diese komplett durchlaufen. Also ich muss bei der Installation keine Eingabe machen.
    "$zaehler" ist die Anzahl wieviele Programme angeklickt wurden
    "$install_file" ist der Netzwerk-Pfad zur *.exe (z.B. \\192.168.0.5\Winrar\Winrar.exe)

    Kann mir jemand helfen?

    mfg deb10er0

  • An dem bisschen Code-Schnipsel fällt mir erstmal kein Fehler auf.
    Da ich ja nicht weiß wo die Variablen $zaehler, $install_pfad und $software_array herkommen kann ich dir nur raten das mal zu debuggen so umzuschreiben damit du testen kannst ob die Pfade richtig ankommen:

    Spoiler anzeigen
    [autoit]

    For $b=1 To $zaehler
    $install_file = $install_pfad & $software_array[$b]
    MsgBox(0,"Setup Nr. " & $b, $install_file)
    ;ShellExecuteWait($install_file)
    Next

    [/autoit]


    Wenn er ansonsten das Shellexecute nicht beendet - dann ist auch das Setup nicht beendet.
    Schau dir dazu mal den Taskmanager an.

  • ok, geht doch. Problem war nur dass des eine Programm zu schnell fertig ist. Hab jetzt einfach ein Sleep mit eingebaut.
    Jetzt hab ich aber das Problem dass er mein Hauptprogramm auch schließt, sobald die letzte Installation fertig ist. Ich hab die For-Schleife in einer Funktion (ohne "return" oder "exit" am ende).
    Die einzelnen Installationsprogramme haben auch kein "exit" am Schluss.

  • hier noch meine GUI.
    die inst_start() ist meine Installations funktion.

    [autoit]


    Func main()
    GUISetState(@SW_SHOW, $Form_installieren)
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button_deinstallieren
    GUISetState(@SW_HIDE, $Form_installieren)
    GUISetState(@SW_SHOW, $Form_deinstallieren)
    Case $Button_installieren
    GUISetState(@SW_SHOW, $Form_installieren)
    GUISetState(@SW_HIDE, $Form_deinstallieren)
    Case $Button_start_inst
    inst_start()
    EndSwitch
    WEnd
    EndFunc

    [/autoit]