Neustart mit auto it Wichtige frage!

  • Hallo,

    Ich habe mal eine Frage wenn ich jetzte ein Programm installieren lasse per auto it alt was ja nicht sonderlich schwer ist. Aber das Programm in der Installation einen Neustart macht wie kann ich dann sagen das Auto it dann genau bei der Stelle nach dem Neustart weiter machen soll?


    Bitte helft mir^^


    Mit freundlichem Gruß


    Moritz

  • HI!

    Du müsstest dein Script dazu bringen, dass es nach einem Neustart sich selber wieder startet z.b.: Autostart.
    Und im Script in eine Datei schreiben wie weit es schon war!
    Das dann beim Start einlesen und beim nächsten Punkt in deinem Script weiter machen.
    Probleme gibt es aber dabei genug!
    z.B: welcher Benutzer ist angemeldet, ist die vorhergende Installation wirklich abgeschlossen usw.

    LG
    Concara

    If not :?: then ?( else :thumbup:

  • Nein, also du muss es in den Autostart schreiben, was anderes bleibt dir nicht übrig

    EDIT:
    Hier mal eine beispiel wie du einen Autostarteintrag machst

    [autoit]

    RegWrite ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run","Programmname","REG_SZ",@ScriptFullPath)

    [/autoit]


    und wie du es wieder löscht

    [autoit]

    RegDelete ("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run","Programmname")

    [/autoit]

    Bei Programmname kannst du den Namen deines Programmes hinschreiben kannst aber auch einfach bla hinschreiben

    mfg. Jam00

  • Oder besser in der Registry "RunOnce"

    Schau Dir mal das CT Script für die Offline Updates an da hast Du ein gutes Beispiel... ;)

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o

  • Hi!

    Das glaub ich dir. Du hältst dich aber auch ziemlich bedeckt.
    Wartest du auf einen neuen Vorschlag?
    Hast du schon etwas ausprobiert?
    Wie sieht dein bisheriger Code aus?
    Sollen wir in die Galskugel schauen?

    OK genug ich denke du weißt was ich meine.

    Zu meinem Vorschlag.
    Du hast mehrer selbständige Installtionsscrpte in Autoit erstellt oder nur eines, wo alle Programme nacheinander abgearbeitet werden!?
    Wenn du mehrer hast dann erstell ein Script mit dem du sie nacheinander startest. Bei nur einer Autoit Datei musst du den Code dazwischen plazieren.

    Beispiel für selbständige (einzelne) Installationsscripte:

    Spoiler anzeigen
    [autoit]


    Dim $scripte[4] =["installation1", "installation2", "installation3", "installation4"]
    $file = FileOpen("wieweitsinddieinstallationen.txt", 0)
    $nummer = FileReadLine($file,1)
    FileClose($file)
    $nummer += 1
    While $nummer <> 5
    ;~ RunWait($scripte[$nummer-1])
    ConsoleWrite($scripte[$nummer-1] & @CRLF)
    $file = FileOpen("wieweitsinddieinstallationen.txt", 2)
    FileWriteLine($file,$nummer)
    FileClose($file)
    $nummer += 1
    WEnd
    ShellExecute("wieweitsinddieinstallationen.txt")

    [/autoit]

    If not :?: then ?( else :thumbup:

    Einmal editiert, zuletzt von Concara (15. Oktober 2009 um 15:05)

  • Ich habe ein Script wo alle dann nacheinandern ablaufen sollen wenn ich für jedes ein einzelndes machen würde wäre das ja kein Problem aber wenn man nur ein script hat ist das einfacher zu pflegen finde ich ich möchte es ja nur hinbekommen wenn ein Programm einen Neu start macht das dann in der Zeile meines Scripts nach dem Neustart weiter gemacht wird dann?

    Ich habe bestimmt 12 programme die ablaufen sollen in einem script dann?

  • JA ist trotzdem die gleiche vorgehensweise!
    Du brauchst eine Datei die dir sagt wo dein Script war.
    Wenn du nur eine Datei hast dann musst du halt in dieser die einzelnen Istallationen als Funktionen gestalten, um sie einzeln ansprechen zu können.

    [EDIT]
    So wie du dir das wahrscheinlich vorstellst geht es meines Wissens nach nicht.
    Das wenn das Script sagen wir mal in Zeile 100 unterbrochen wurde, dass es dann nach einem neustart in der Zeile 101 weiter geht.

    [Edit2]
    Hier ein weiteres Beispiel wo alles in einer Datei ist.

    Spoiler anzeigen
    [autoit]


    $file = FileOpen("wieweitsinddieinstallationen.txt", 0)
    $nummer = FileReadLine($file,1)
    FileClose($file)
    $nummer += 1
    While $nummer <> 5
    If $nummer = 1 Then
    _install1()
    ElseIf $nummer = 2 Then
    _install2()
    ElseIf $nummer = 3 Then
    _install3()
    ElseIF $nummer = 4 Then
    _install4()
    EndIf
    $file = FileOpen("wieweitsinddieinstallationen.txt", 2)
    FileWriteLine($file,$nummer)
    FileClose($file)
    $nummer += 1
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _install1()
    ;.........Programm1
    EndFunc
    Func _install2()
    ;.........Programm2
    EndFunc
    Func _install3()
    ;.........Programm3
    EndFunc
    Func _install4()
    ;.........Programm4
    EndFunc

    [/autoit]

    If not :?: then ?( else :thumbup:

    5 Mal editiert, zuletzt von Concara (19. Oktober 2009 um 11:04)

    • Offizieller Beitrag

    Ich habe bestimmt 12 programme die ablaufen sollen in einem script dann?

    Ja und? Das gehört sowieso in ein Array um es in einer Schleife abzuarbeiten (alles andere wäre ineffektiv).
    Vor der Installation legst du einen Eintrag für dein Installprogramm in RunOnce an.
    Das Programm muß mit Parameter gestartet werden (Index Installationsschritt), per default also 0 oder 1, je nachdem, wie du dein Array aufbaust.
    Also schreibst du vor jedem Installationsschritt den aktuellen Startparameter (Indexwert des Arrays) in die Registry und nach erfolgreicher Installation löschst du ihn sofort wieder.

  • Wenn du dein Programm in den RunOnce Schlüssel der Rigistry schreibt kannst du auch einen Parameter übergeben.
    Dein Programm prüft einfach beim Start ob der Parameter übergeben wurde. Wenn nicht, dann startet es die Installation von vorn, wenn doch setzt es die Installation fort.

  • Also wenn jezz die erste Installation starte sage ich erstelle die datei Installationsvorschritt.txt nach der Installation schreibe ich dann rein 1 für erste installation fertig halt dann sstartet die 2 te installation danach schreibe ich eine 2 in diese datei und immer so weiter aber wenn dann ein neu start kommt iwe schaffe ich es dann das mein autoit gui dann wieder von alleine startet und dann bei installation dierekt weiter macht? den au3 in autostart kopieren oder wie?

  • Hi!

    Du bist blutiger Anfänger was!? (ist nicht böse gemeint, schließlich fängt jeder mal an)
    Du musst sie natürlich Compilieren.
    Heißt in eine deinScriptName.exe umwandeln.
    Diese kannst du dann wie in den anderen Beiträgen schon beschrieben, über die Registry starten lassen.
    Aber ich denke einfacher für dich ist es, wenn du eine Verknüpfung im Autostartordner erstellst.

    edit:
    Wenn du es so machst wie ich es beschrieben habe, dann musst du bevor du die Installation startest die Zahl in die Datei schreiben.
    Es könnte ja sein, dass diese Installation neu startet. Dann wird dein Script abgebrochen und wenn der PC wieder gestartet ist, würde er diese Installaton wieder aufrufen.
    Einfacher wäre es immer noch dir zu helfen, wenn du etwas von deinem Code zeigen würdest.


    LG
    Concara

    If not :?: then ?( else :thumbup:

    Einmal editiert, zuletzt von Concara (16. Oktober 2009 um 11:43)

  • Also bei dieser Installation ist es so das ich es mir so vorgestellt habe die exe wird gestartet dann klickt er sich von alleine durch also automatisch aber dann bei der Installation wie ihr ja in meinem Code seht kommt das Fenster Jetzt neu starten und dort kann ich nur neu starten sagen wenn nicht wird das programm nicht installiert und nach dem neu Start geht das Programm ja weiter doch auto it soll ja dann auch wieder weiter gehen und die letztens buttons der installation automatisch durchführen? und danach denn mit dem nächsten programm weiter machen? Vielleicht kann mir ja jetzt jemand helfen dabei?


    [autoit]

    run("T:\UpdateDVD28092009\Auto\WindowsXP\Winfuture3.16XPSP3-14102009\WinFuture_WinXPsp3_UpdatePack_3.16_Oktober-2009-Vollversion.exe")
    blockinput(1)
    winwait ("WinFuture Update Pack für Windows XP SP3 (Oktober 2009)")
    sleep(4000)
    controlclick("WinFuture Update Pack für Windows XP SP3 (Oktober 2009)", "Weiter" , "TButton4" )
    sleep(2000)
    controlclick("WinFuture Update Pack für Windows XP SP3 (Oktober 2009)", "Ich stimme zu" , "TRadioButton2" )
    sleep(2000)
    controlclick("WinFuture Update Pack für Windows XP SP3 (Oktober 2009)", "Weiter" , "TButton3" )
    sleep(2000)
    controlclick("WinFuture Update Pack für Windows XP SP3 (Oktober 2009)", "Automatisch" , "TRadioButton2" )
    sleep (1000)
    controlclick("WinFuture Update Pack für Windows XP SP3 (Oktober 2009)", "Weiter" , "TButton3" )
    sleep (500)
    WinSetTitle("WinFuture Update Pack für Windows XP SP3 (Oktober 2009)", "" , "Installation123")
    winwait ("Neu starten")
    controlclick ("Neu starten" , "Jetzt neu starten" , "TButton1") ;genau hier!!
    sleep (1000)
    WinWaitclose("Installation123")
    sleep (2000)
    controlclick("WinFuture Update Pack für Windows XP SP3 (Oktober 2009)", "Jetzt nicht neu starten", "TCheckBox1" )
    sleep (1000)
    controlclick("WinFuture Update Pack für Windows XP SP3 (Oktober 2009)", "Beenden" , "TButton2" )
    blockinput (0)

    [/autoit]
  • Jo. Das Script ins Autostart machen.
    Hab auch ne kleine Idee, wies funktionieren könnte.
    Bin mir aber nicht sicher?

    [autoit]


    IniWrite("install.ini", "installation", "step", "1")
    $i = IniRead("install.ini", "installation", "step","")
    while 1

    [/autoit][autoit][/autoit][autoit]

    switch($i)
    case 1:
    run("T:\UpdateDVD28092009\Auto\WindowsXP\Winfuture3.16XPSP3-14102009\WinFuture_WinXPsp3_UpdatePack_3.16_Oktober-2009-Vollversion.exe")
    blockinput(1)
    winwait ("WinFuture Update Pack für Windows XP SP3 (Oktober 2009)")
    IniWrite("install.ini", "installation", "step", "2")
    sleep(4000)

    [/autoit][autoit][/autoit][autoit]

    case 2:
    controlclick("WinFuture Update Pack für Windows XP SP3 (Oktober 2009)", "Weiter" , "TButton4" )
    sleep(2000)
    IniDelete("install.ini", "installation")
    IniWrite("install.ini", "installation", "step", "3")

    [/autoit][autoit][/autoit][autoit]

    case 3:
    controlclick("WinFuture Update Pack für Windows XP SP3 (Oktober 2009)", "Ich stimme zu" , "TRadioButton2" )
    sleep(2000)
    IniDelete("install.ini", "installation")
    IniWrite("install.ini", "installation", "step", "4")

    [/autoit][autoit][/autoit][autoit]

    case 4:
    controlclick("WinFuture Update Pack für Windows XP SP3 (Oktober 2009)", "Weiter" , "TButton3" )
    sleep(2000)
    IniDelete("install.ini", "installation")
    IniWrite("install.ini", "installation", "step", "5")

    [/autoit][autoit][/autoit][autoit]

    case 5:
    controlclick("WinFuture Update Pack für Windows XP SP3 (Oktober 2009)", "Automatisch" , "TRadioButton2" )
    sleep (1000)
    IniDelete("install.ini", "installation")
    IniWrite("install.ini", "installation", "step", "6")

    [/autoit][autoit][/autoit][autoit]

    case 6:
    controlclick("WinFuture Update Pack für Windows XP SP3 (Oktober 2009)", "Weiter" , "TButton3" )
    sleep (500)
    IniDelete("install.ini", "installation")
    IniWrite("install.ini", "installation", "step", "7")

    [/autoit][autoit][/autoit][autoit]

    case 7:
    WinSetTitle("WinFuture Update Pack für Windows XP SP3 (Oktober 2009)", "" , "Installation123")
    IniDelete("install.ini", "installation")
    IniWrite("install.ini", "installation", "step", "8")
    winwait ("Neu starten")
    controlclick ("Neu starten" , "Jetzt neu starten" , "TButton1")

    [/autoit][autoit][/autoit][autoit]

    case 8:
    WinWaitclose("Installation123")
    sleep (2000)
    IniDelete("install.ini", "installation")
    IniWrite("install.ini", "installation", "step", "9")

    [/autoit][autoit][/autoit][autoit]

    case 9:
    controlclick("WinFuture Update Pack für Windows XP SP3 (Oktober 2009)", "Jetzt nicht neu starten", "TCheckBox1" )
    sleep (1000)
    controlclick("WinFuture Update Pack für Windows XP SP3 (Oktober 2009)", "Beenden" , "TButton2" )
    blockinput (0)
    IniDelete("install.ini", "installation")
    IniWrite("install.ini", "installation", "step", "10")

    [/autoit][autoit][/autoit][autoit]

    default:
    MsgBox(1, "Error", "An Error occured. Please reinstall the Application.")

    [/autoit][autoit][/autoit][autoit]

    EndSwitch

    [/autoit][autoit][/autoit][autoit]

    if($i = 10) Then
    FileDelete("install.ini")
    MSGBox(1, "Installation was Successful", "Your Installation is successfully completed.")
    Exit
    EndIf

    [/autoit][autoit][/autoit][autoit]

    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Wenn ich das script von dir ausführen lasse kommt gleich nen fehler bei case 1 das geht irgendwie nicht mit case 1 case 2 und so?