Automatische Installation

  • Hallo Zusammen...

    ich habe mich gerade an einen Script versucht um z.B. Notepad++ automatisch zu installieren. Leider komme ich nicht wirklich weiter.

    Wenn ich das Script aufrufe startet es das Setup aber bei der Sprachauswahl bleibt er stehen. Soweit ich das Verstanden habe sollte dieses Script mit dem letzten Befehl den OK Button klicken.

    Code
    ShellExecute("c:\Install\npp.5.6.8.Installer.exe") 
    WinWait("Installer Language","Please select a language.") 
    WinActivate("Installer Language","Please select a language.") 
    ControlClick("Installer Language","Please select a language.","OK")

    Mein OS: Windows 7 32bit

    AutoIt Version: 1.79

    Mfg Yepe

    Einmal editiert, zuletzt von YepeMC (26. Mai 2010 um 07:38)

  • nein du brauchst die ID nicht die caption des buttons^^
    benutzt dafür das autoitfinder tool =)

    Edit:
    Die ID ist 1^^
    allerdings klappts bei mir auch mit OK aber denke du solltest 1 verwenden :)

  • Du Brauchst das WindowInfo tool von AutoIt (ist meine ich bei Scite im Lieferumfang) um die ControlID herauszufinden :)


    Ansonsten ist eine Silentinstallation meist die bessere/zuverlässigere Methode
    Diese könntest du dann mit Run oder Shellexecute starten.
    Siehe
    http://sourceforge.net/projects/notep…message=3092670
    Habs nicht ausprobiert aber meist ändern die die Schalter nicht ;) (musst nur schauen, ob die Dateierweiterungen zugewiesen werden ggf. gibt es inzwischen zusätzliche Parameter dafür)

    Achso deine Angabe über die AutoIt Version ist hoffentlich nicht ganz korrekt :D

    21 is only half the truth.

  • danke für deine Antwort.

    ich habe jetzt das Script geändert.

    Code
    ShellExecute("c:\Install\npp.5.6.8.Installer.exe") 
    WinWait("Installer Language","Please select a language.") 
    WinActivate("Installer Language","Please select a language.") 
    ControlClick("Installer Language", "Please select a language.", "Button1")


    Ergebnis: Windows 7 ... das gleiche wie im 1sten Posting

    Windows XP komme ich einen Fenster weiter. 8|


    Ist natürlich Version v3.3.6.1 :whistling:

    Klar gibt es auch andere wege über z.B. MSI Packete. Für mich war das der Ansatz um mich mit AutoIT auseinander zu setzen und das Ergebnis gleich Produktiv zu nutzen.

    Einmal editiert, zuletzt von YepeMC (25. Mai 2010 um 20:54)

  • Machs so:

    [autoit]

    ShellExecute("npp.5.6.8.Installer.exe")
    WinWait("Installer Language","Please select a language.")
    WinActivate("Installer Language","Please select a language.")
    ControlClick("Installer Language", "", "[CLASS:Button; INSTANCE:1]")

    [/autoit]

    Edit: So klappts aber...(habs selber getestet...)

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Leider funktioniert das auch nicht.

    Ich habe an deinem Script lediglich nur in der ersten Zeile den Pfad ergänzt. (c:\install\....)


    Nachtrag: Das System mit Windows 7 ist frisch installiert. Was ich geändert habe ist UAC ist deaktiviert.

  • Klappt auch mein Edit nicht?

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • den meinte ich. unter Windows XP läuft auch der Code aber Windows 7 leider nicht...

    Ich starte mal eben mein Notebook und werde es dort testen auch Windows 7

    Nachtrag: auch bei meinem Notebook läuft das Script nicht.

  • Hi,

    versuche es mal damit ... (ungetestet)

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #RequireAdmin

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

    #include <Constants.au3>

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

    Global Const $ID_COMBO_LANG = 1002
    Global Const $ID_BUTTON_OK = 1
    Global Const $ID_TREEVIEW_COMPONENTS = 1032
    Global Const $ID_CHECKBOX_EXEC_NPP = 1203

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

    ;««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

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

    Exit (InstallNpp ("c:\Install\npp.5.6.8.Installer.exe"))

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

    ;««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

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

    Func InstallNpp ($setup_path)

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

    ;-- Prüfen, ob die Datei existiert.
    If (FileExists ($setup_path)) Then
    ShellExecute ($setup_path)
    Else
    Return ErrorMsg ('Die Datei "'&$setup_path&'" existiert nicht.')
    EndIf

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

    ;-- Wir warten max. 10 Sekunden auf das Sprachauswahl-Dialogfenster.

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

    If (WinWait ("Installer Language","Please select a language.", 10)) Then

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

    $hwnd = WinGetHandle ("Installer Language","Please select a language.")

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

    WinActivate($hwnd)

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

    ;-- Ist die Sprache schon auf Deutsch gesetzt?

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

    If (ControlGetText ($hwnd, "", $ID_COMBO_LANG) <> "Deutsch") Then

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

    ;-- Wenn nicht, dann setzen wir die Sprache ...

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

    ControlSetText ($hwnd, "", $ID_COMBO_LANG, "Deutsch")
    EndIf

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

    ;-- Sprachauswahl-Dialog beenden.

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

    If (ControlClick($hwnd, "Please select a language.", $ID_BUTTON_OK)) Then

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

    ;-- Wir warten max. 5 Sekunden auf das Installations-Dialogfenster.

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

    If (WinWait ("Notepad++ v5.6.8 Installation", "", 5)) Then

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

    $hwnd = WinGetHandle ("Notepad++ v5.6.8 Installation")

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

    WinActivate($hwnd)

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

    ;-- Willkommen-Dialog
    If (not ControlClick ($hwnd, "", $ID_BUTTON_OK)) Then _ ; "&Weiter >"
    Return ErrorMsg ("Der Willkommen-Dialog konnte nicht weitergeführt werden.")

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

    Sleep (250)

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

    ;-- Lizenz-Dialog
    If (not ControlClick ($hwnd, "", $ID_BUTTON_OK)) Then _ ; "&Annehmen"
    Return ErrorMsg ("Der Lizenz-Dialog konnte nicht weitergeführt werden.")

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

    Sleep (250)

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

    ;-- Zielverzeichnis Auswahl-Dialog
    If (not ControlClick ($hwnd, "", $ID_BUTTON_OK)) Then _ ; "&Weiter >"
    Return ErrorMsg ("Der Zielverzeichnis Auswahl-Dialog konnte nicht weitergeführt werden.")

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

    Sleep (250)

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

    ;-- Komponenten Auswahl-Dialog

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

    ; Den Plugins-Zweig in der Baumansicht ausklappen (Test...).
    ControlTreeView ($hwnd, "", $ID_TREEVIEW_COMPONENTS, "Expand", "Plugins")

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

    Sleep (5000)

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

    If (not ControlClick ($hwnd, "", $ID_BUTTON_OK)) Then _ ; "&Installieren"
    Return ErrorMsg ("Der Komponenten Auswahl-Dialog konnte nicht weitergeführt werden.")

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

    ;-- Auf den "Installation fertig stellen"-Dialog warten.

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

    WinWait ($hwnd, "Die Installation von Notepad++ v5.6.8 wird abgeschlossen")

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

    ;-- Installation fertig stellen.

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

    ; Notepad++ NICHT starten.
    ControlCommand ($hwnd, "", $ID_CHECKBOX_EXEC_NPP, "UnCheck", "")

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

    If (not ControlClick ($hwnd, "", $ID_BUTTON_OK)) Then _ ; "&Fertig stellen"
    Return ErrorMsg ('Der "Installation fertig stellen"-Dialog konnte nicht weitergeführt werden.')

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

    Else
    ErrorMsg ("Das Installations-Dialogfenster konnte nicht ermittelt werden.")
    EndIf
    Else
    Return ErrorMsg ("Der Sprachauswahl-Dialog konnte nicht beendet werden.")
    EndIf
    Else
    ErrorMsg ("Das Sprachauswahl-Dialogfenster konnte nicht ermittelt werden.")
    EndIf

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

    Return 0

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

    EndFunc

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

    ;««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

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

    Func ErrorMsg ($text)

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

    Local $sfText = StringFormat ($text, "")
    Return MsgBox (BitOR ($MB_ICONHAND, $MB_OK), 0, $sfText)

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

    EndFunc

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

    EDIT:
    Evtl. noch ein paar Sleep (250) einbauen (ganz vergessen... :rolleyes: ).

    Gruß
    Greenhorn


    3 Mal editiert, zuletzt von Greenhorn (25. Mai 2010 um 22:27)

  • Hallo Greenhorn


    mit deinem Script läuft das ganze auch unter Windows 7


    Dankeschön für eure Hilfe


    Yepe