So hier noch mal mein Script mit Euren Änderungen! (Doch ich hatte dein Vorschlag ausprobiert, aber mal abgesehen davon das bei Deinem geposteten Vorschlag der Befehl "EndSelect" gefehlt hat ging er immer noch nicht )
Case Else war natürlich auch überflüssig! Danke!
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.2.10.0
Author: EKE
Script Function:
Software Installer
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]; Start
[/autoit] [autoit][/autoit] [autoit]#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
$Form = GUICreate("Bitte auswaehlen", 500, 300)
[/autoit] [autoit][/autoit] [autoit]GUICtrlCreateLabel("Programme:", 10, 10, 120, 20)
;Verfügbare Software die angezeigt wird
$checkbox1 = GUICtrlCreateCheckbox("Apache", 10, 30, 120, 20)
$checkbox2 = GUICtrlCreateCheckbox("MySQL", 10, 50, 120, 20)
$checkbox3 = GUICtrlCreateCheckbox("PHP", 10, 70, 120, 20)
$checkbox4 = GUICtrlCreateCheckbox("Eclipse", 10, 90, 120, 20)
$checkbox5 = GUICtrlCreateCheckbox("Open Office", 10, 110, 120, 20)
GUICtrlCreateLabel("Installierte Version:", 150, 10)
;Versionsnummer die über Registry ausgelesen werden
$key1 = RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\60A26258C8D21CB46BDEA507D590FCCF\InstallProperties", "DisplayVersion")
$key2 = RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\7CCFF8067327BB74BA5D381457A4B3AB\InstallProperties", "DisplayVersion");Mysql5
$key8 = RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\78FFD36025F793A4980CFB7F9E7BABE8\InstallProperties", "DisplayVersion");Mysql4
$key3 = RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-21-1801674531-1958367476-839522115-1003\Products\03C2AF00BB2C2A540B3C6759148E6F2A\InstallProperties", "DisplayVersion")
$key4 = ("")
$key5 = RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\7F56B5DD5AC74ED4EA7EE7F862FB875F\InstallProperties", "DisplayVersion")
;Kontrollbutton in der GUI
$Button1 = GUICtrlCreateButton("Installierte Versionen prüfen", 10, 200, 180, 17, 0)
$Button2 = GUICtrlCreateButton("Alle", 10, 220, 65, 17, 0)
$Button3 = GUICtrlCreateButton("Keine", 10, 240, 65, 17, 0)
$Button4 = GUICtrlCreateButton("Beenden", 200, 270, 65, 17, 0)
$Button5 = GUICtrlCreateButton("ausgew. Programme installieren", 250, 200, 180, 17, 0)
$Button6 = GUICtrlCreateButton("Alle", 250, 220, 65, 17, 0)
$Button7 = GUICtrlCreateButton("Keine", 250, 240, 65, 17, 0)
GUICtrlSetState ($Button5,$GUI_DISABLE)
GUICtrlSetState ($Button6,$GUI_DISABLE)
GUICtrlSetState ($Button7,$GUI_DISABLE);GUI_DISABLE = ausgrauen eines Buttons/Checkbox etc
GUICtrlCreateLabel("Updates:", 400, 10)
;Update Buttons
$Update1 = GUICtrlCreateButton("Update", 400, 30, 65, 17, 0)
$Update2 = GUICtrlCreateButton("Update", 400, 50, 65, 17, 0)
$Update3 = GUICtrlCreateButton("Update", 400, 70, 65, 17, 0)
$Update4 = GUICtrlCreateButton("Update", 400, 90, 65, 17, 0)
$Update5 = GUICtrlCreateButton("Update", 400, 110, 65, 17, 0)
GUICtrlSetState ($Update2,$GUI_DISABLE)
GUICtrlSetState ($Update3,$GUI_DISABLE)
GUICtrlSetState ($Update4,$GUI_DISABLE)
GUICtrlSetState ($Update5,$GUI_DISABLE)
GUICtrlCreateLabel("Installation:",300,10)
;Installation Checkbox
$install1 = GUICtrlCreateCheckbox("", 315, 30, 65, 17, 0)
$install2 = GUICtrlCreateCheckbox("", 315, 50, 65, 17, 0)
$install3 = GUICtrlCreateCheckbox("", 315, 70, 65, 17, 0)
$install4 = GUICtrlCreateCheckbox("", 315, 90, 65, 17, 0)
$install5 = GUICtrlCreateCheckbox("", 315, 110, 65, 17, 0)
GUICtrlSetState ($install1,$GUI_DISABLE)
GUICtrlSetState ($install2,$GUI_DISABLE)
GUICtrlSetState ($install3,$GUI_DISABLE)
GUICtrlSetState ($install4,$GUI_DISABLE)
GUICtrlSetState ($install5,$GUI_DISABLE)
GUISetState() ; will display an dialog box with checkbox
; Run the GUI until the dialog is closed
$wert = 220
WinSetTrans($Form, "", $wert)
While 1
$msg = GUIGetMsg()
Switch $msg
[/autoit] [autoit][/autoit] [autoit]Case $Button1
;Prüfen ob eines der Programme vorhanden ist
GUISetState (@SW_SHOW)
Select
Case GUICtrlRead($Checkbox1) = 1
GUICtrlCreateLabel($key1, 150, 30, 120, 20)
If $key1 <= 2.2 Then
GUICtrlSetState ($Update1, $GUI_ENABLE)
ElseIf $key1 = () Then ; Problem: wenn kein Eintrag vorhanden ist, soll die Checkbox (install1) aktiviert werden, aber ich weiß nicht wie man der GUI sagt "wenn kein Inhalt/Datein nciht vorhanden, dann..."
GUICtrlSetState ($install1, $GUI_ENABLE)
GUICtrlSetState ($Button5, $GUI_ENABLE)
GUICtrlSetState ($Button6, $GUI_ENABLE)
GUICtrlSetState ($Button7, $GUI_ENABLE)
EndIf
EndSelect
Select
Case GUICtrlRead($Checkbox2) = 1
GUICtrlCreateLabel($key8 & $key2, 150, 50, 120, 20)
If $key2 or $key8 <= 6.1 Then
GUICtrlSetState ($Update2, $GUI_ENABLE)
ElseIf $key2 =() Then
GUICtrlSetState ($install2, $GUI_ENABLE)
GUICtrlSetState ($Button5, $GUI_ENABLE)
GUICtrlSetState ($Button6, $GUI_ENABLE)
GUICtrlSetState ($Button7, $GUI_ENABLE)
EndIf
EndSelect
Select
Case GUICtrlRead($Checkbox3) = 1
GUICtrlCreateLabel($key3, 150, 70, 120, 20)
If $key3 <=5.1 Then
GUICtrlSetState ($Update3, $GUI_ENABLE)
ElseIf $key3 =() Then
GUICtrlSetState ($install3, $GUI_ENABLE)
GUICtrlSetState ($Button5, $GUI_ENABLE)
GUICtrlSetState ($Button6, $GUI_ENABLE)
GUICtrlSetState ($Button7, $GUI_ENABLE)
EndIf
EndSelect
Select
Case GUICtrlRead($Checkbox4) = 1
GUICtrlCreateLabel($key4, 150, 90, 120, 20)
If $key4 >= 1.0 Then
GUICtrlSetState ($Update4, $GUI_ENABLE)
ElseIf $key4 =("") Then
GUICtrlSetState ($install4, $GUI_ENABLE)
GUICtrlSetState ($Button5, $GUI_ENABLE)
GUICtrlSetState ($Button6, $GUI_ENABLE)
GUICtrlSetState ($Button7, $GUI_ENABLE)
EndIf
EndSelect
Select
Case GUICtrlRead($Checkbox5) = 1
GUICtrlCreateLabel($key5, 150, 110, 120, 20)
If $key5 >= 1.0 Then
GUICtrlSetState ($Update5, $GUI_ENABLE)
ElseIf $key5 =("") Then
GUICtrlSetState ($install5, $GUI_ENABLE)
GUICtrlSetState ($Button5, $GUI_ENABLE)
GUICtrlSetState ($Button6, $GUI_ENABLE)
GUICtrlSetState ($Button7, $GUI_ENABLE)
EndIf
EndSelect
;Prüfung zu Ende
GUISetState(@SW_RESTORE)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Case $Button2
For $i = $Checkbox1 To $Checkbox5
GUICtrlSetState($i, $GUI_Checked)
Next
Case $Button3
For $i = $Checkbox1 To $Checkbox5
GUICtrlSetState($i, $GUI_Unchecked)
Next
Case $Button4
Exit
Case $Button5
GUISetState (@SW_SHOW)
Select
Case GUICtrlRead($install1) = $GUI_CHECKED and $GUI_ENABLE
RunWait("P:\autoit\bla.exe")
Case GUICtrlRead($install2) = $GUI_CHECKED and $GUI_ENABLE
RunWait("P:\autoit\bla.exe")
Case GUICtrlRead($install3) = $GUI_CHECKED and $GUI_ENABLE
RunWait("P:\autoit\bla.exe")
Case GUICtrlRead($install4) = $GUI_CHECKED and $GUI_ENABLE
RunWait("P:\autoit\bla.exe")
Case GUICtrlRead($install5) = $GUI_CHECKED and $GUI_ENABLE
RunWait("P:\autoit\bla.exe")
EndSelect
GUISetState(@SW_RESTORE)
[/autoit] [autoit][/autoit] [autoit]Case $Button4
Exit
Case $Button6
;Sollte eigentlich so sein, dass nur die aktiven Fenster angeklickt werden, er markiert aber alle -.-"
Select
Case GUICtrlRead($install1) = $GUI_ENABLE
;Hier GUICtrlGetState nehmen
Case BitAnd(GUICtrlGetState($install1) , $GUI_ENABLE)
EndSelect
Case $Button7
; Hier natürlich das selbe wie Button6 nur umgekehrt
Select
Case GUICtrlRead($install1) = $GUI_ENABLE
GUICtrlSetState($install1, $GUI_Unchecked)
Case GUICtrlRead($install2) = $GUI_ENABLE
GUICtrlSetState($install2, $GUI_Unchecked)
Case GUICtrlRead($install3) = $GUI_ENABLE
GUICtrlSetState($install3, $GUI_Unchecked)
Case GUICtrlRead($install4) = $GUI_ENABLE
GUICtrlSetState($install4, $GUI_Unchecked)
Case GUICtrlRead($install5) = $GUI_ENABLE
GUICtrlSetState($install5, $GUI_Unchecked)
EndSelect
Case $Update1
Run ("P:\autoit\bla.exe")
Case $Update2
;HIer sollte eigentlich ein neues GUI aufgehen mit dem man über die Auswahl von MySQL 4 oder 5 entscheiden kann!
Case $Update3
Run ("P:\autoit\bla.exe")
Case $Update4
Run ("P:\autoit\bla.exe")
Case $Update5
Run ("P:\autoit\bla.exe")
ExitLoop
[/autoit] [autoit][/autoit] [autoit]$output = ''
[/autoit] [autoit][/autoit] [autoit]For $x = 1 To 5 Step 1
If GUICtrlRead(Eval("check" & $x)) = $GUI_CHECKED Then $output = $output & ControlGetText($Form, '', Eval("check" & $x)) & @CRLF
Next
msgbox(0,"",$output)
EndSwitch
WEnd