Install-Tool "Jetzt Installieren"-Button? Achtung, neuling.

  • Mahlzeit,

    Ich bin erst seit 2 Tagen dabei, ein wenig mit Auto-It zu werkeln.
    Ich möchte für diverse Programme eine Auswahl erstellen und diese dann mit einem Klick auf "installieren" installieren.

    Den ganzen Code für die einzelnen Programme habe ich mir schon zusammengeschrieben, nur funktioniert es noch nicht, dass er erst bei einem Klick auf "Installieren" loslegt, sondern schon dann, wenn sie makriert sind.
    Einige Programme sollen vorher schon markiert sein.

    Wo liegt mein fehler?

    Ich danke euch schon einmal im Vorraus.

    (Ja, ich weiß, dass das MSGbox snipplet falsch drin steht, war auch nur zum testen.

    EDIT: Funktioniert das mit der Formatierung nicht so richtig?


    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    #Region ### START Koda GUI section ###
    Form=Q:\..Install 64 bit Systeme\Test\Form1.kxf
    $Form1 = GUICreate("Form1", 615, 438, 192, 124)
    $Reader = GUICtrlCreateCheckbox("Adobe Reader", 24, 88, 97, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $Flash = GUICtrlCreateCheckbox("Adobe Flash Player", 24, 120, 113, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $Java = GUICtrlCreateCheckbox("Java", 24, 152, 97, 17)
    $Installer = GUICtrlCreateLabel("Installer", 240, 24, 124, 41)
    GUICtrlSetFont(-1, 24, 800, 0, "MS Sans Serif")
    $winrar = GUICtrlCreateCheckbox("WinRAR", 24, 184, 97, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $picasa = GUICtrlCreateCheckbox("Picasa", 24, 216, 97, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $ccleaner = GUICtrlCreateCheckbox("CCleaner", 24, 248, 97, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $spybot = GUICtrlCreateCheckbox("Spybot", 24, 280, 97, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $pdf = GUICtrlCreateCheckbox("PDF24", 24, 312, 97, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $firefox = GUICtrlCreateCheckbox("Firefox", 24, 344, 97, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $vlc = GUICtrlCreateCheckbox("VLC", 320, 144, 97, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $adw = GUICtrlCreateCheckbox("Adw", 320, 176, 97, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $acronis = GUICtrlCreateCheckbox("Acronis", 320, 208, 97, 17)
    $gdata = GUICtrlCreateCheckbox("Gdata", 320, 240, 97, 17)
    $mse = GUICtrlCreateCheckbox("MSE", 320, 272, 97, 17)
    $fernwartung = GUICtrlCreateCheckbox("Fernwartung", 320, 304, 97, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $installieren = GUICtrlCreateButton("Installieren", 192, 352, 321, 57)
    $o2003 = GUICtrlCreateCheckbox("Office 2003", 320, 112, 97, 17)
    GUISetState(@SW_SHOW)

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

    #EndRegion ### END Koda GUI section ###
    $Pause = 1
    While 1 $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    While $Pause = 1 Then
    GUICtrlSetOnEvent(Pause=0)
    WEnd
    Case $Java
    MsgBox(,"TesT","waaaaa")
    Case $Flash
    #comments-start
    Hier kommen das AutoIt script für das jeweilige Programm
    #comments-end

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

    Case $winrar
    #comments-start
    Hier kommen das AutoIt script für das jeweilige Programm
    #comments-end
    Case $ccleaner
    #comments-start
    Hier kommen das AutoIt script für das jeweilige Programm
    #comments-end
    Case $spybot
    #comments-start
    Hier kommen das AutoIt script für das jeweilige Programm
    #comments-end
    Case $firefox
    #comments-start
    Hier kommen das AutoIt script für das jeweilige Programm
    #comments-end
    Case $adw
    #comments-start
    Hier kommen das AutoIt script für das jeweilige Programm
    #comments-end
    Case $gdata
    #comments-start
    #comments-end
    Case $fernwartung
    #comments-start
    Hier kommen das AutoIt script für das jeweilige Programm
    #comments-end
    Case $mse
    Case $o2003
    Case $pdf
    Case $vlc
    Case $picasa
    Case $Reader
    EndSwitch
    WEnd

    [/autoit]
    • Offizieller Beitrag

    1. Entweder wird OnEvent-Mode ODER GuiGetMsg verwendet, niemals beides gemeinsam.
    2. Du fragst die Betätigung der Checkboxen ab, somit startet die Installation sofort. Die Events der Checkboxen brauchst du überhaupt nicht, Dein Install-Button muss die Abfrage tätigen.
    Hier mal ein simples Bsp.:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    $hGui = GUICreate('Test')
    $cCheck1 = GUICtrlCreateCheckbox('A', 10, 10, 40)
    $cCheck2 = GUICtrlCreateCheckbox('B', 10, 40, 40)
    $cCheck3 = GUICtrlCreateCheckbox('C', 10, 70, 40)
    $cCheck4 = GUICtrlCreateCheckbox('D', 10, 100, 40)
    $cRun = GUICtrlCreateButton('Install', 250, 10, 80)

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

    GUISetState()

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

    While True
    Switch GUIGetMsg()
    Case -3
    Exit
    Case $cRun
    _InstallChecked()
    EndSwitch
    WEnd

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

    Func _InstallChecked()
    If BitAND(GUICtrlRead($cCheck1), $GUI_CHECKED) Then
    ConsoleWrite('Install A' & @LF)
    ; Installcode
    EndIf
    If BitAND(GUICtrlRead($cCheck2), $GUI_CHECKED) Then
    ConsoleWrite('Install B' & @LF)
    ; Installcode
    EndIf
    If BitAND(GUICtrlRead($cCheck3), $GUI_CHECKED) Then
    ConsoleWrite('Install C' & @LF)
    ; Installcode
    EndIf
    If BitAND(GUICtrlRead($cCheck4), $GUI_CHECKED) Then
    ConsoleWrite('Install D' & @LF)
    ; Installcode
    EndIf
    EndFunc

    [/autoit]


    Edit: Und wenn es viele Checkboxen sein sollen, sind Arrays eine feine Sache :thumbup:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    ; == Array mit [Checkbox-ID,Checkbox-Text,aufzurufende Funktion]
    Global $aInstall[10][3] = [ _
    [0,'A','_Func_A'], _
    [0,'B','_Func_B'], _
    [0,'C','_Func_C'], _
    [0,'D','_Func_D'], _
    [0,'E','_Func_E'], _
    [0,'F','_Func_F'], _
    [0,'G','_Func_G'], _
    [0,'H','_Func_H'], _
    [0,'I','_Func_I'], _
    [0,'J','_Func_J']]

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

    $hGui = GUICreate('Test')

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

    For $i = 0 To 9
    $aInstall[$i][0] = GUICtrlCreateCheckbox($aInstall[$i][1], 10, 10+$i*30)
    Next
    $cRun = GUICtrlCreateButton('Install', 250, 10, 80)

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

    GUISetState()

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

    While True
    Switch GUIGetMsg()
    Case -3
    Exit
    Case $cRun
    _InstallChecked()
    EndSwitch
    WEnd

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

    Func _InstallChecked()
    For $i = 0 To 9
    If BitAND(GUICtrlRead($aInstall[$i][0]), $GUI_CHECKED) Then
    Call($aInstall[$i][2])
    EndIf
    Next
    EndFunc

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

    Func _Func_A()
    ConsoleWrite('Install A' & @LF)
    ; Installationscode
    EndFunc

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

    Func _Func_B()
    ConsoleWrite('Install B' & @LF)
    ; Installationscode
    EndFunc

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

    Func _Func_C()
    ConsoleWrite('Install C' & @LF)
    ; Installationscode
    EndFunc

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

    Func _Func_D()
    ConsoleWrite('Install D' & @LF)
    ; Installationscode
    EndFunc

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

    Func _Func_E()
    ConsoleWrite('Install E' & @LF)
    ; Installationscode
    EndFunc

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

    Func _Func_F()
    ConsoleWrite('Install F' & @LF)
    ; Installationscode
    EndFunc

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

    Func _Func_G()
    ConsoleWrite('Install G' & @LF)
    ; Installationscode
    EndFunc

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

    Func _Func_H()
    ConsoleWrite('Install H' & @LF)
    ; Installationscode
    EndFunc

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

    Func _Func_I()
    ConsoleWrite('Install I' & @LF)
    ; Installationscode
    EndFunc

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

    Func _Func_J()
    ConsoleWrite('Install J' & @LF)
    ; Installationscode
    EndFunc

    [/autoit]