LogFiles und mehr

  • Guten Morgen,

    ich habe mir die letzte Nacht um die Ohren geschlagen um ein AutoIt Script zu erstellen. Im großen und ganzen bin ich damit auch sehr zufrieden. Ein kleiner Fehler tritt auf, den ich bis jetzt nicht lösen konnte. Der eigentliche Prozess der Softwareinstallation funktioniert prima. Nun möchte ich aber etwas Sicherheit einbauen. Wenn das Setup ein weiteres Mal gestartet wird, erscheint eine Meldung das die Software bereits installiert wurde. Danach sind die Meldungen und Fragen identisch mit dem ersten Installationsprozess. Ich frage also zuerst:

    $WindowsUp=WinWait("Text 1 bla bla bla",20)
    If $WindowsUp=0

    Danach bestätige ich die Meldung das die Software installiert ist und das eigentlich Setup startet. Dies funktioniert prima.

    Danach frage ich ab:

    $WindowsUp=WinWait("Text 2 bla 2 bla 2 bla 2",20)
    If $WindowsUp=0

    Und jetzt kommt der Punkt den ich nicht verstehe. Wird die Installation das erste Mal gestartet, wird der erste Teil übergangen, da die Meldung das die Software bereits installiert ist nicht vorhanden ist. Dann kommt die Abfrage zwei und die Installation startet und wird erfolgreich durchgeführt.
    Ist die Software aber bereits installiert, funktioniert der erste Teil prima, läuft dann in den zweiten Teil und bleibt nach der dritten oder vierten Meldung stehen.
    Ich habe das Fenster mit seinen Meldungen und den Button mehrfach geprüft, aber sie sind mit der eigentlich Installationsweg identisch. Aber wieso bleibt das Script dann stehen?

    Gibt es eine Art Logfile in dem ich nachschauen kann, auf was das Script jetzt wartet oder wieso es nicht weiter läuft?

    Bis jetzt löse ich das Problem so, dass ich beim erscheinen der Meldung einfach auf OK und dann auf Abbrechen klicke. Ich würde aber viel lieber eine erneute Installation vornehmen.

    Würde mich freuen wenn mir jemand helfen kann.

    Einmal editiert, zuletzt von Nice_2012 (22. Juli 2012 um 22:18)

  • Bau in dein Skript einfach ein paar mal ConsoleWrite ein und gucke dann, wo es nicht weitergeht.

    [autoit]


    Func Ulam($n)
    Return 1
    EndFunc

    [/autoit]


    Rekursion FTW :D

  • Hallo, danke für eure Beiträge.

    Ich habe ConsoleWrite bis jetzt nicht genutzt/gekannt. Wie setze ich diesen Befehl sinnvoll ein? Einfach mal "hallo" in die Console zu schreiben kann mich nicht wirklich weiter bringen oder? Ich hätte mir gewünscht, dass er jeden Befehl den er im Script stehen hat, in ein LogFile oder in die Console schreibt. Wie sonst soll ich erkennen, wieso er einfach stehen bleibt. Es ist ein WinWait und ich habe dieses Fenster mehrfach mit dem AutoIt v3 Windows Info überprüft. Für mich sind die Infos über das Window und die Werte die in meinem WinWait stehen identisch.

  • Dann schreib doch eine Logfile mit den File-Funktionen. Was du reinschreibst musst du ja wissen damit du weißt an welcher Stelle du vom Script bist.

    • Offizieller Beitrag

    @Nice_2012
    Ich vermute, dir fehlt noch etwas an Grundlagen. Jedes Ausführen eines Befehls in AutoIt setzt parallel das Makro @error. Bei erfolgreicher Ausführung ist @error=0. Treten Fehler auf kannst du die Fehlerwerte in der Hilfe zum entsprechenden Befehl nachlesen. Erweiterte Fehlerinformationen werden auch häufig im Makro @extended hinterlegt.
    Wenn du also die Befehle so ausführen läßt:

    [autoit]

    ConsoleWrite( Funktion($param1, $param2) & @CRLF & 'error: ' & @error & @CRLF)

    [/autoit]

    bekommst du die relevanten Infos in die Konsole.
    Noch besser geht es, wenn du in SciTE einfach den Cursor auf den Funktionsnamen setzt und "Alt+D" drückst. ;) Dann wird eine Debugzeile mit dem Aufruf unterhalb des Befehlsaufrufs eingefügt. Den originalen Aufruf kommentierst du dann vorübergehend aus.