Installation verschiedener Programme

  • Hallo,
    wie ihr euch schon denken könnt habe ich ein Problem bzw besser gesagt eine Frage:
    Ich hab bereits ein paar Scripte geschrieben, welche die Installation des Apache2.2 sowie MySQL 4 und 5 (alles unter Windows) automatisch durchlaufen. Nun möchte ich aber eine Art Root-Menü indem ich durch einfaches Häkchen setzen bestimmen kann, welche Programme installiert werden sollen. Z.B.: Apache 1 + MySQL 4 + PHP 5 oder Apache 2.2 + MYSQL 5 + ... etc!
    Ich weiß aber nicht so recht wo ich anfangen soll. Die Scripte für die einzelenen Installationen habe ich. Was mir jetzt noch fehlt ist eben ein Fenster indem ich die verschiedenen Programme auswählen kann!
    Vielen Dank im voraus!
    cphowdy

  • Hey cphowdy,
    mach dir doch einfach ne GUI mit KODA.

    Ich häg dir mal mein Software Menü für ein Paar von meinen Programmen an.
    Die GUI kannst du ja dann für deine Zwecke anpassen...sollte kein allzugroßes Problem sein, da ich die GUI größtenteils auch von jemand anders übernommen habe.
    Weis jetzt leider nicht mehr von wem *sorry*....sonst hät ich denjenigen nämlich bei Autoren mit reingeschrieben xD
    Also bei dem Menü handelt es sich um ein Testmenü! Hab einfach mal nen paar Programme reingeschrieben, die mir gerade so eingefallen sind. Aber ich denke, das wirst du schon rauslesen können wie das funktioniert.
    Viel Erfolg

    Mfg
    Apollo 13

    Fernbedienung0.2_S100_fuer_VLC.rar

  • Moin,

    ich hatte mir auch mal ein kleines Skript gebastelt, zwar nicht sooo schön wie das von Apollo aber ich wollte auch nur was haben wo ich mal schnell was hinzufügen kann oder entfernen.
    So, was ist zum Skript zu sagen, der Aufbau ist recht einfach, mal angenommen Dein Hauptskript liegt unter C:\Installer\Hauptskript.exe und du möchtest Office2003 einfügen dann sieht die Ordnerstrucktur wie folgt aus:
    C:\Installer\Hauptskript.exe <-- Das Übersichtsfenster
    C:\Installer\Office2003\Office2003.exe <-- Dein Installskript
    Ich habe dann noch immer einen Unterordner gemacht wo meine Installationsdateien drin sind
    C:\Installer\Office2003\Installfiles\

    Um zu testen ob die einzelnen Installationen richtig durchgelaufen sind habe ich meine Installationsskripte immer mit EXIT 2 beendet, wenn dem so ist, zeigt das Hauptskript einen erfolg an ansonsten einen Fehler :)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <Array.au3>
    Opt("GUIOnEventMode", 1)

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

    #cs
    Programm: Software Installer
    Autor: J. Kröger
    Datum: Jan. 2008
    ---------------------------------------------------------------------------
    Das Programm installiert alle in Unterordner liegenden Programme.
    Ordnerstrucktur (z. B. C:\INSTALLER)
    C:\INSTALLER\Software Installer
    C:\INSTALLER\Office 2900\Office 2900.exe
    C:\INSTALLER\Office 2900\INSTALL
    C:\INSTALLER\Adobe Reader\Adobe Reader.exe
    C:\INSTALLER\Adobe Reader\Adobe Reader_Versoin 555.exe

    Es ist also wichtig das die Datei die aufgerufen werden soll, so benannt
    ist wie der Ordner.

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

    Ebenfalls ist zu beachten, das die von Euch erstellten Scripte mit Exit 2
    beendet werden, da dieses Skritpt sagt nur was mit 2 endet ist gut :)
    #ce

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

    ; Variabeln
    Dim $Path, $AnzFolders,$Hoehe,$Element
    Dim $avInstFiles[1]
    Dim $avInstFolderName[1]

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

    ; Standart Variablen setzen
    $Path = @ScriptDir & "\"
    $Hoehe = 68
    $Element = 20

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

    ; Funktion für die Überürüfung auf Existenz der Installationsporgramme
    GetAnzFolders()

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

    ; Wenn keine Installationsporgramme gefunden wurden wird das Skript beendet
    If ($AnzFolders = 0 ) Then Exit

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

    ; Entfernen des leeren Array Eintrags 0
    _ArrayDelete($avInstFiles,0)
    _ArrayDelete($avInstFolderName,0)

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

    ; Hier wird die Variabel um 1 verkleinert, damit man besser mit dem Arry arbeiten
    ; kann, z. B. für Schleifen
    $AnzFolders = $AnzFolders - 1

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

    ; Form erstellung
    $frmMain = GUICreate("Software Installer", 385, (68+($AnzFolders * 33)+30), 193, 125)

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

    ; Variabel für Checkboxen und Infofelder und Hilfetexte (txt-Datei), ich gehe mal davon aus das man nicht mehr als 100 Skripte laufen lässt :) ansonsten diesen Wert erhöhen
    Global $chkbox[100]
    Global $Info[100]
    Global $Txt[100]

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

    ; Je nachdem wieviel Unterordner es gibt wird hier die Schleife durchlaufen und die Checkboxen werden angelegt
    For $i = 0 To $AnzFolders
    $chkbox[$i] = GUICtrlCreateCheckbox($avInstFolderName[$i], 24, $Element, 161, 25)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $Info[$i] = GUICtrlCreateLabel ("", 208, $Element, 161, 16)
    $Element = $Element + 33
    Next

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

    ; Button für den Start
    $cmdStart = GUICtrlCreateButton("Gewählte &Installationen starten", 16, $Element, 161, 33, 0)
    GUICtrlSetOnEvent(-1, "Install")

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

    ; Button für das beenden
    $cmdClose = GUICtrlCreateButton("Programm &schliessen", 208, $Element, 161, 33, 0)
    GUICtrlSetOnEvent(-1, "ProgEnde")
    GUISetState(@SW_SHOW)

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

    ; Dauerschleife für den OnEventModus
    While 1
    Sleep(10)
    WEnd

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

    #region Funktionen

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

    ; Programm beenden
    Func ProgEnde()
    Exit
    EndFunc

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

    ; Hier wird Installaton aufgerufen, es wird gegenzeichnet ob sie OK war und dann wird die nächste aufgerufen, etc.
    Func Install()
    For $i = 0 to $AnzFolders
    If (GUICtrlRead($chkbox[$i]) = $GUI_CHECKED) Then
    If (RunWait($avInstFiles[$i]) = 2) then
    GUICtrlSetData ($Info[$i],"Erfolgreich")
    GUICtrlSetColor($Info[$i],0x00ff00) ; Grün
    GUICtrlSetFont($Info[$i],11,400,2)
    Else
    GUICtrlSetData ($Info[$i],"Fehler")
    GUICtrlSetColor($Info[$i],0xff0000) ; Rot
    GUICtrlSetFont($Info[$i],11,400,2)
    EndIf
    EndIf
    Next
    EndFunc

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

    ; Zum einen ziehe ich mir hier die Anzahl der Ordner zum anderen wird geprüft ob es die passende Datei gibt
    Func GetAnzFolders()
    ; Einleiten der Suche
    $search = FileFindFirstFile($Path & "*")

    ; Anzahl auf 0 setzen
    $AnzFolders = 0

    ; Wenn die Suche nicht erfolgreich war Funktion verlassen
    If $search = -1 Then
    Exit
    EndIf

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

    ; Wenn die Suche ausgeführt werden konnte
    While 1
    ; Zuweisen der gefundenen Datei/Ordners
    $file = FileFindNextFile($search)

    ; Bei Fehler Schleife verlassen
    If @error Then ExitLoop

    ; $file ignorieren wenn es sich um dieses Skript handelt (Es sollte nur die kompelierte EXE in dem Verzeichniss sein!!!)
    If ($file <> @ScriptName) Then

    ; Aufbau der Installationsdatei
    $InstFile = $Path & $file & "\" & $file & ".exe"

    ; Prüfen ob die Installationsdatei vorhanden ist
    If (FileExists($InstFile)) Then

    ; Anzahl um 1 erhöhen
    $AnzFolders = $AnzFolders + 1

    ; Array mit dem Pfad erweitern
    _ArrayAdd($avInstFiles,$InstFile)
    _ArrayAdd($avInstFolderName,$file)
    EndIf
    EndIf
    WEnd

    ; Schliessen des Search Handels
    FileClose($search)
    EndFunc
    #endregion

    [/autoit]

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Servus,

    erst mal Danke für die schnelle Hilfe!!Hat mir sehr geholfen!
    Und da ihr alle so fleißig antwortet, wollte ich mich auch noch mal kurz zu Wort melden:
    Habe die Version von Apollo 13 verwendet (sry MCPoldy, er war eben schneller ;) ) und sie mir für meine Programme zurecht "gekürzt"! Hat soweit geklappt. Ich werde jetzt mal mit meinen Admin reden noch ein paar Programme hinzufügen!
    Ich melde mich nochmal wenn ich alles fertig habe!

    MfG

  • Freut mich das es dir gefällt =)
    Aber ich finde die Lösung von McPoldy auch recht nett, da ist das Programme hinzufügen besser gelöst
    Ich denke diese Lösung kann ich auch für etwas gebraucht, ich hoffe das ich deinen Source dafür verwenden darf.

    Mfg
    Apollo 13

  • Mir gefällt die Lösung von Apollo wegen der Kategorien gut, wie gesagt, ich habe mir das nur mal so gemacht, wenn ich ehrlich bin, hab ich sie noch nie (nur zum testen) benutzt :)
    @Apollo jau, darf frei genutzt werden :)

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • So!
    Hier ich nochmal! Hab das GUI jetzt nach meinen Vorstellungen gebastelt. Die einzelnen .exen funktionieren wunderbar! ABER das Problem liegt darin, dass es die einzelnen Scripte nicht automatisch schließt! Rechts unten inder Taskleite sind sie noch aktiv und sobald ich es da händisch schließe läuft mein "Hauptscropit" weiter und startet die nächste .exe. Das sollte aber von alleine aus gehen! Ich hoff ihr wisst was ich meine!
    Grüße

    Einmal editiert, zuletzt von cphowdy (5. März 2008 um 17:09)

  • Warum beenden sich die Skripte nicht von Selbst? Das tun sie doch normalerweise, wenn sie fertig sind :)

  • Na woher soll ich denn das wissen O_O
    Wenn ich auf die Symbole klicken, heisst es "Script paused"!

  • Wenn man auf das Symbol klickt, wird das Skript pausiert. Das kann mit Opt("TrayAutoPause",0) abgestellt werden. Und wenn ein Skript beendet ist, verschwindet auch das Icon. Hast du am Ende der Skript vielleicht eine While-Schleife?

  • Moin Moin,
    nope - keine While Schleife! Ich hab das gefühl, das mit jedem weiteren Schritt immer weniger geht! :/ Irgendwas muss ich noch falsch machen! Ich hab euch jetzt mal die Scripte damit ihr mir vll meine Fehler nennen könnt! Was ich zB auch nicht verstehe, ist, dass mein apache.au3 anscheinend nach Lust und Laune entscheidet, ob es jetzt tut oder nicht. Ohne Spaß , manchmal tut es und manchmal wieder nicht! (sprich: stoppt gleich beim 1. Installation Wizard)
    Ach und wenn ich grad am Meckern bin: Erklärt mir mal bitte das Phänomen, dass es mir ab und zu immer meine Tastatur bzw Mauskonfiguration zerschiesst ?? Das ist nämlich auch ein Grund warum die Installation abbrechen. Sobald ich eine zeitlang an den Scripten gebastelt habe, funktioniert meine Maus nicht mehr richtig. ( wenn ich einen Doppelklick machen erscheinen zB die Eigenschaften, drücke ich Win + D öffnet sich die Menüleiste "Datei" im Firefox anstatt , dass es mir den Desktop anzeigt!)
    Help! ..I need somebodys HELP!
    Aber hab gute Laune: Es ist Freitag :D

  • Hi,
    hat denn keiner ne Idee?? Hab gehofft ich kann noch ein paar Tipps mit in das Wochenende nehmen...
    Grüße
    Un schönes We ;)

  • Hi,

    leider kenne ich das Problem das Du beschreibst auch, aber nur sehr sporadisch :(. Aber erst seit ich mein Skript auf die Version 3.2.10 portiert habe. Unter Version 3.1 gab es diese Probleme nicht.
    ABER: Parallel habe ich auch einige Erweiterungen vorgenommen, die ebenfalls Schuld sein könnten. Bisher habe ich nur herausgefunden, das es irgendwie mit der ALT Taste zu tun haben muß. Aufgefallen ist mir das, weil bestimmte Kennzeichen in der GUI, die per ALT umschaltbar sind, anfingen zu blinken.
    Immer wenn das Problem jetzt auftritt, kann ich meine Tastatur und Maus durch mehrfaches Drücken von ALT retten. Da es aber nicht beliebig reproduzierbar ist, konnte ich es noch nicht genauer eingrenzen. Ich habe in meinem Skript BlockInput() verwendet, und hatte diese Funktion in Verdacht, weil das zu den letzten Änderungen gehört.

    Hast Du in einem der Skripte auch BlockInput in Verwendung?

    Gruß,

    TrueMu

  • Morgen,

    hat denn wirklich niemand ein Fehler in meinem Script gefunden??? Das nervt nämlich ein wenig -.-"
    Ok, Danke für den Tipp @TrueMe. Ich werde das mal austesten, wenn meine Tastatur wieder spinnt! ..Und nein, ich habe kein BlockInput in meinem Script verwendet!

    Grüße

  • So Jungs,
    warum meldet sich denn hier keiner?? Naja, halb so schlimm. Ich hab die Problem selber in den Griff bekommen! Ich versuche mich gerade an einem Installer der automatisch nach der Versionsnummer sucht und dann prüft ob eine neuere Version vorhanden ist. (Ein Updater, ich weiß, aber speziell auf unsere Bedürfnisse angepasst!) Ich hab mal ein bisschen was geschrieben diese Woche, hab jetzt aber ehrlich gesagt kein Nerv mehr und seh den Wald vor lauter Bäumen nicht mehr!
    Ich habe euch hier mal das Script und hoffe, dass einer von euch übers We oder nächste Woche mal genügend Muse hat und mir sagen kann was ich falsch mache. (Ich hab meine Probleme als Kommentare im Script hinzugefügt)

    Spoiler anzeigen

    #cs ----------------------------------------------------------------------------

    AutoIt Version: 3.2.10.0
    Author: EKE

    Script Function:
    Software Installer

    #ce ----------------------------------------------------------------------------

    ; Start

    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>

    $Form = GUICreate("Bitte auswaehlen", 500, 300)

    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

    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
    Case Else
    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
    Case Else
    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
    Case Else
    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

    Case Else
    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
    Case Else
    EndSelect
    ;Prüfung zu Ende

    GUISetState(@SW_RESTORE)


    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) = 1 and GUICtrlRead($install1) = $GUI_ENABLE
    RunWait("C:\autoit\bla.exe")
    Case GUICtrlRead($install2) = 1 and GUICtrlRead($install2) = $GUI_ENABLE
    RunWait("C:\autoit\bla.exe")
    Case GUICtrlRead($install3) = 1 and GUICtrlRead($install3) = $GUI_ENABLE
    RunWait("C:\autoit\bla.exe")
    Case GUICtrlRead($install4) = 1 and GUICtrlRead($install4) = $GUI_ENABLE
    RunWait("C:\autoit\bla.exe")
    Case GUICtrlRead($install5) = 1 and GUICtrlRead($install5) = $GUI_ENABLE
    RunWait("C:\autoit\bla.exe")
    EndSelect

    GUISetState(@SW_RESTORE)

    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
    GUICtrlSetState($install1, $GUI_Checked)
    Case GUICtrlRead($install2) = $GUI_ENABLE
    GUICtrlSetState($install2, $GUI_Checked)
    Case GUICtrlRead($install3) = $GUI_ENABLE
    GUICtrlSetState($install3, $GUI_Checked)
    Case GUICtrlRead($install4) = $GUI_ENABLE
    GUICtrlSetState($install4, $GUI_Checked)
    Case GUICtrlRead($install5) = $GUI_ENABLE
    GUICtrlSetState($install5, $GUI_Checked)
    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 ("C:\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 ("C:\autoit\bla.exe")

    Case $Update4
    Run ("C:\autoit\bla.exe")

    Case $Update5
    Run ("C:\autoit\bla.exe")


    ExitLoop


    $output = ''

    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

    Danke und schönes We!

  • Ich will ja nicht meckern, aber irgendwie scheint sich hier absolut gar nix zu tun!!!!! Bisschen mehr Unterstützung hatte ich mir schon erhofft!

  • Ja, hier mal das erste:

    Spoiler anzeigen
    [autoit]

    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)

    [/autoit]

    Btw: vllt würden mehr helfen, wenn das Skript in AutoIt - Tags stände, da dann die Kommentare besser sichtbar sind :)

    Code
    [autoit][/autoit]
  • danke für die hilfe...aber es geht immer noch nicht!!

    Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.2.10.0
    Author: EKE

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

    Script Function:
    Software Installer

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

    #ce ----------------------------------------------------------------------------

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

    ; Start

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

    #include <GUIConstants.au3>
    #include <GUIConstantsEx.au3>

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

    $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)

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

    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")

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

    ;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

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

    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)

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

    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)

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

    GUISetState() ; will display an dialog box with checkbox
    ; Run the GUI until the dialog is closed

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

    $wert = 220
    WinSetTrans($Form, "", $wert)

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

    While 1
    $msg = GUIGetMsg()

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

    Switch $msg

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

    Case $Button1
    ;Prüfen ob eines der Programme vorhanden ist
    GUISetState (@SW_SHOW)

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

    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
    Case Else
    EndSelect

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

    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
    Case Else
    EndSelect

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

    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
    Case Else
    EndSelect

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

    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

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

    Case Else
    EndSelect

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

    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
    Case Else
    EndSelect
    ;Prüfung zu Ende

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

    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

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

    Case $Button5

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

    GUISetState (@SW_SHOW)

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

    Select
    Case GUICtrlRead($install1) = 1 and GUICtrlRead($install1) = $GUI_ENABLE
    RunWait("C:\autoit\bla.exe")
    Case GUICtrlRead($install2) = 1 and GUICtrlRead($install2) = $GUI_ENABLE
    RunWait("C:\autoit\bla.exe")
    Case GUICtrlRead($install3) = 1 and GUICtrlRead($install3) = $GUI_ENABLE
    RunWait("C:\autoit\bla.exe")
    Case GUICtrlRead($install4) = 1 and GUICtrlRead($install4) = $GUI_ENABLE
    RunWait("C:\autoit\bla.exe")
    Case GUICtrlRead($install5) = 1 and GUICtrlRead($install5) = $GUI_ENABLE
    RunWait("C:\autoit\bla.exe")
    EndSelect

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

    GUISetState(@SW_RESTORE)

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

    Case $Button4
    Exit

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

    Case $Button6
    ;Sollte eigentlich so sein, dass nur die aktiven Fenster angeklickt werden, er markiert aber alle -.-"
    Select
    Case GUICtrlRead($install1) = $GUI_ENABLE
    GUICtrlSetState($install1, $GUI_Checked)
    Case GUICtrlRead($install2) = $GUI_ENABLE
    GUICtrlSetState($install2, $GUI_Checked)
    Case GUICtrlRead($install3) = $GUI_ENABLE
    GUICtrlSetState($install3, $GUI_Checked)
    Case GUICtrlRead($install4) = $GUI_ENABLE
    GUICtrlSetState($install4, $GUI_Checked)
    Case GUICtrlRead($install5) = $GUI_ENABLE
    GUICtrlSetState($install5, $GUI_Checked)
    EndSelect

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

    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

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

    Case $Update1
    Run ("C:\autoit\bla.exe")

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

    Case $Update2
    ;HIer sollte eigentlich ein neues GUI aufgehen mit dem man über die Auswahl von MySQL 4 oder 5 entscheiden kann!

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

    Case $Update3
    Run ("C:\autoit\bla.exe")

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

    Case $Update4
    Run ("C:\autoit\bla.exe")

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

    Case $Update5
    Run ("C:\autoit\bla.exe")

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

    ExitLoop

    [/autoit] [autoit][/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

    [/autoit]
  • Mir ist beim überfliegen nur zwei Dinge aufgefallen: Du hast von Z.92 - Zeile 161 immer noch ein unnötiges Case Else vor das EndSelect geschrieben und du hast z.T. in der Main-While noch Controls erstellt, dies sollte man vermeiden. Arbeite lieber wie bei den anderen Controls mit GUICtrlSetState() und setze die nicht benötigten lieber auf $GUI_Hide

    Projekte: Keine größeren (und fertigen)
    Gegen Internetzensur:
    https://epetitionen.bundestag.de/index.php?acti…s;petition=3860
    (Zeichnungsfrist abgelaufen)
    __________________________________________________________________________________________________________________________________
    Dieser Beitrag wurde bereits 264 mal editiert, zuletzt von »Fast2« (30. Februar 2009, 12:99)

    Einmal editiert, zuletzt von Fast2 (28. März 2008 um 21:21)

  • Hey, in dem Code ist aber meine Änderung nicht drin. Hast du das wirklich ausprobiert?