Automatische Auswahl aus ComboBox in Installationsskript

  • Hallo,

    ich habe da ein Problem mit der Installation von Gadwin PrintScreen. Leider gibt es keine Installationsparameter, die den Aufruf einer ComboBox verhindern.
    In der ComboBox kann man die Installationssprache auswählen und anschließend muss dann der OK Button gedrückt werden.

    Ich habe es jetzt mit der Funktion ControlCommand versucht (s. code), allerdings scheine ich da etwas Grundlegendes falsch verstanden zu haben, es funktioniert nicht...
    Button1 ist der OK-Button...
    Anstelle von "ComboBox1" habe ich auch "[CLASS:ComboBox; INSTANCE:1]" ausprobiert, mit dem gleichen Effekt.

    [autoit]

    #include <GUIComboBox.au3>
    #include <GuiConstantsEx.au3>

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

    Global $occurence
    Global $mysetting

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

    RunWait("D:\heimann\LDPackages\PrintScreen\PrintScreen44_Setup.exe")
    WinActivate("Installer Language", "")

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

    $occurence = ControlCommand("Installer Language","", "ComboBox1","FindString", "English")
    $mysetting = ControlCommand("Installer Language","", "ComboBox1","SetCurrentSelection", $occurence)
    ControlEnable("Installer Language","","Button1")

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

    MsgBox(4096,"test", "Occurence: " &$occurence &@CRLF &"mysetting: " &$mysetting)

    [/autoit]

    AutoIt Window Info:


    mfg
    Axel

    There exist 10 different kind of people on earth.
    Those who understand binary, and those who don't.

    Einmal editiert, zuletzt von ahe (13. Mai 2009 um 17:37)

  • Hallo,

    kann es sein, dass man nur einen Wert in einer ComboBox setzen kann, wenn man sie zuvor selbst erzeugt hat?

    Bislang war ich der Ansicht, dass ich die einzelnen Einträge einer ComboBox auslesen kann und den gewünschten Eintrag als "Default" setzen kann...
    So wie es aussieht scheint die Funktion ControlCommand etwas anders zu funktionieren, als ich dachte... ich komme immer im Skript in den Fehlerfall...

    [autoit]

    Run("D:\PrintScreen\PrintScreen44_Setup.exe")
    $occurence = ControlCommand("Installer Language","", "ComboBox1","FindString", 'Deutsch')
    if @error=1 Then
    MsgBox(4096, "Fehler", $occurence)
    Else
    MsgBox(4096,"Kein Fehler",$occurence)
    EndIf

    [/autoit]

    etwas Rat- und derzeit ziemlich Ideenlos (ich glaube ich brauche noch einen Liter Kaffee...)
    Axel

    There exist 10 different kind of people on earth.
    Those who understand binary, and those who don't.

  • [autoit]

    ControlSend ( "title", "text", controlID, "string" [, flag] )

    [/autoit]

    als string benutzt du dann einfach den gewünschten string der in deiner combo vorkommt (ungetestet)

    EDIT: habs grad getestet funktioniert

  • Danke Oliver,

    aber, mmh, ich habe es auch getestet, allerdings habe ich das Problem, dass sich der Wert erst dann ändert, wenn zuvor eine MsgBox geöffnet/geschlossen wurde (?)! Anscheinend stimmt da 'was mit dem Focus nicht...
    Kurios ist auch, dass man nicht "English" als String übergeben kann, sondern "ee", da ansonsten Espanol genommen wird, für Deutschland darf man nicht "Deutsch" nehmen, sondern "dd", ansonsten erhält man den Wert "Chinese (Simplified)" (bei einfachem "d" ist es "Dansk"...)

    [autoit]

    Run("D:\PrintScreen\PrintScreen44_Setup.exe")
    MsgBox(4096, "diedeldum", "dummdideldei")
    ControlSend("Installer Language","", "ComboBox1", "ee")

    [/autoit]

    mfg
    Axel

    There exist 10 different kind of people on earth.
    Those who understand binary, and those who don't.

  • kann ich schlecht nachvollziehen, bei mir funktioniert der befehl... hab das ganze mit nem script versucht, welches mir über nen text den entsprechenden screensaver in windoof auswählt...

  • Hallo Oliver,

    es scheint an SciTE zu liegen, habe immer "Go" gestartet, anstatt das Ganze 'mal zu compilieren... (wieder einmal wurde die eigene Faulheit bestraft :whistling: ...)

    Jetzt funktioniert es auch bei mir. Mit dem folgenden Skript sollte man dann auch nicht nach Pfaden, etc. gefragt werden, der Parameter /S (silent Parameter des NSIS-Installer) scheint die restliche Installation silent zu machen...

    [autoit]

    Run("D:\PrintScreen\PrintScreen44_Setup.exe /S")
    Sleep(2000)
    $hwnd = WinGetHandle("Installer Language", "Installer Language")
    ControlSend("Installer Language","", "ComboBox1", "ee")
    Send("{ENTER}")

    [/autoit]

    Ach ja, eine Anfrage beim Hersteller hat bislang nix gebracht...

    mfg
    Axel

    There exist 10 different kind of people on earth.
    Those who understand binary, and those who don't.

  • Hallo,

    leider war die "Lösung" nur teilweise erfolgreich.

    Solange irgendjemand angemeldet ist, funktioniert die "Abarbeitung" des Dialogs.
    Wenn aber, wie bei Software Verteilungen von Desktop Management Systemen üblich, niemand angemeldet sein muss, da ein lokaler Dienst bzw. das Systemkonto die Installation durchführt, dann passiert nix. (was ja auch logisch ist, ein Dialog kann ja auch wg. der nicht laufenden Shell (explorer.exe) nicht angezeigt werden...)

    Jetzt bin ich etwas ratlos, wie ich einen nicht angezeigten Dialog durchgehen soll, ich vermute, ich muss eine Art Snapshot Paket erstellen und verteilen...

    mfg
    Axel

    There exist 10 different kind of people on earth.
    Those who understand binary, and those who don't.

  • mit was für ner softwareverteilung arbeitest du? sollte die das nicht selber können? probier das ganze mal mit msi

  • Hallo Oliver,

    wir arbeiten mit LANDesk. Leider ist das Setup eine NSIS-Installer EXE, keine MSI.
    Ich werde daher ein Paket mit AutoIt machen, dass die Dateien in ein Verzeichnis kopiert, die Registryeinträge macht und die Icons erstellt... so muss ich nicht das original Setup starten.

    mfg
    Axel

    There exist 10 different kind of people on earth.
    Those who understand binary, and those who don't.