Installations Script

  • Hallo :)

    Ich bastel mal wieder ein Installations Script. Dieses mal zu AdAware 2008. Da ist das wie in vielen Sicherheitsprogrammen, das sie automatisch Updaten wollen. Doch gibt es Unterschiedliche Fenster, wenn ein Update möglich ist (Netzwerkkarte installiert, Kabel angeschlossen), oder wenn es halt nicht möglich ist (Netzwerkkarte nicht installiert o. ä. ).

    Dazu gibt das Programm verschiedene Texte aus "Visible Text" Einmal halt Installation finished und halt wenn es nicht geht Failed to retrieve update data.

    Ich würde das gerne mit einer IF Anweisung lösen, halt wenn der Text da steht, geht er den Zweig usw. Ich habe aber noch keine Möglichkeit gefunden den Visible Text in der IF Anweisung auszulesen. Hoffe mir kann da geholfen werden.

    Ich arbeite übrigens mit dem IOM3 super Programm und hilft mir sehr, da ich am Tag viele zu installierende Rechner hier habe :)

    Und wenn jemand den bisherigen Code sehen möchte hab ich auch noch hier:

    Spoiler anzeigen

    #RequireAdmin
    #NoTrayIcon

    #include "..\..\funktionen.au3"

    $search = FileFindFirstFile(@ScriptDir & "\*.exe")
    $datei = FileFindNextFile($search)
    FileClose($search)
    ShellExecute(@ScriptDir & "\" & $datei)

    $titel = "Ad-Aware 2008 Setup"
    AutoItSetOption("MouseCoordMode",0)

    WinActivate("Ad-Aware", "Please select a language from the list below")
    WinWaitActive("Ad-Aware", "Please select a language from the list below")
    Sleep("200")
    send("{DOWN}")
    Sleep("200")
    send("{DOWN}")
    Sleep("200")
    send("{DOWN}")
    Sleep("200")
    send("{DOWN}")
    Sleep("200")
    send("{DOWN}")
    Sleep("200")
    ControlClick("Ad-Aware", "OK", "Button1")

    WinActivate($titel, "Willkommen beim Installationsassistenten")
    WinWaitActive($titel, "Willkommen beim Installationsassistenten")
    Sleep("300")
    ControlClick($titel, "&Weiter >", "Button1")

    WinActivate($titel, "Ich akzeptiere die Lizenzvereinbarung")
    WinWaitActive($titel, "Ich akzeptiere die Lizenzvereinbarung")
    Sleep("300")
    ControlCommand($titel, "Ich &akzeptiere die Lizenzvereinbarung.", "Button3", "Check", "")
    Sleep("300")
    ControlClick($titel, "&Weiter >", "Button4")

    WinActivate($titel, "Die Einstellungen für diese Anwendung")
    WinWaitActive($titel, "Die Einstellungen für diese Anwendung")
    Sleep("300")
    ControlClick($titel, "&Weiter >", "Button4")

    WinActivate($titel, "Standard installation")
    WinWaitActive($titel, "Standard installation")
    Sleep("300")
    ControlClick($titel, "&Weiter >", "Button1")

    WinActivate($titel, "Zielordner")
    WinWaitActive($titel, "Zielordner")
    Sleep("300")
    ControlClick($titel, "&Weiter >", "Button1")

    WinActivate($titel, "Lavasoft-Installationsassistent")
    WinWaitActive($titel, "Lavasoft-Installationsassistent")
    Sleep("300")
    ControlClick($titel, "&Weiter >", "Button1")

    WinActivate("Product registration", "Hardware-Fingerprint")
    WinWaitActive("Product registration", "Hardware-Fingerprint")
    Sleep("300")
    MouseClick("left", 334, 202, 2)

    Bin über Verbesserungsvorschläge über meinen Code auch sehr Dankbar.

    Gruß Dave

    PS Ich weiß, viel Text für ein kleines Anliegen *g*

    Einmal editiert, zuletzt von Daveman (29. September 2008 um 16:31)

    • Offizieller Beitrag

    Hallo!

    Freut mich, dass du IOM3 nutzt, im nächsten PC Magazin wird es voraussichtlich IOM4 geben.

    Habe das Problem nicht komplett gelesen, aber wenn sie Fenster unterscheiden können, dann so behandeln z.B.:

    [autoit]

    While 1
    If WinExists(...) Then
    ; behandeln
    ExitLoop
    EndIf

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

    If WinExists(...) Then
    ; behandeln
    ExitLoop
    EndIf

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

    WEnd

    [/autoit]

    Happy Coding,
    peethebee

  • Oder so:

    [autoit]

    If WinGetText($titel) = "Bitte tun sie das und das!") Then

    [/autoit]


    Das Problem ist nur, bei Programmen, die je nach Hard- und Software andere Fenster öffnen, dass man oft nicht alle Möglichkeiten zu Gesicht bekommt!


    Verbesserungsvorschlag: Ich würde das überall so machen

    [autoit]

    WinWait($titel, "Lavasoft-Installationsassistent")
    WinActivate($titel, "Lavasoft-Installationsassistent")

    [/autoit]
  • Hallo und danke für die Antworten :)

    Ich habe das dann erstmal so gelöst:

    [autoit]


    If WinGetText("Lavasoft Update Manager", "Server connection failed") Then
    MsgBox(4096, "Test", "Hat geklappt!"
    Else
    MsgBox(4096, "Test", "Nix geklappt!"
    EndIf

    [/autoit]

    Die Boxen waren natürlich nur zum testen ob es angenomme wird :)

    Und danke funkey, ich werd das dann so berücksichtigen.
    Gruß
    Dave