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
Installation verschiedener Programme
-
- [ offen ]
-
cphowdy -
27. Februar 2008 um 10:45 -
Geschlossen -
Erledigt
-
-
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 ErfolgMfg
Apollo 13 -
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>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#include <Array.au3>
Opt("GUIOnEventMode", 1)#cs
[/autoit] [autoit][/autoit] [autoit]
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.Ebenfalls ist zu beachten, das die von Euch erstellten Scripte mit Exit 2
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
beendet werden, da dieses Skritpt sagt nur was mit 2 endet ist gut
#ce; Variabeln
[/autoit] [autoit][/autoit] [autoit]
Dim $Path, $AnzFolders,$Hoehe,$Element
Dim $avInstFiles[1]
Dim $avInstFolderName[1]; Standart Variablen setzen
[/autoit] [autoit][/autoit] [autoit]
$Path = @ScriptDir & "\"
$Hoehe = 68
$Element = 20; Funktion für die Überürüfung auf Existenz der Installationsporgramme
[/autoit] [autoit][/autoit] [autoit]
GetAnzFolders(); Wenn keine Installationsporgramme gefunden wurden wird das Skript beendet
[/autoit] [autoit][/autoit] [autoit]
If ($AnzFolders = 0 ) Then Exit; Entfernen des leeren Array Eintrags 0
[/autoit] [autoit][/autoit] [autoit]
_ArrayDelete($avInstFiles,0)
_ArrayDelete($avInstFolderName,0); Hier wird die Variabel um 1 verkleinert, damit man besser mit dem Arry arbeiten
[/autoit] [autoit][/autoit] [autoit]
; kann, z. B. für Schleifen
$AnzFolders = $AnzFolders - 1; Form erstellung
[/autoit] [autoit][/autoit] [autoit]
$frmMain = GUICreate("Software Installer", 385, (68+($AnzFolders * 33)+30), 193, 125); 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
[/autoit] [autoit][/autoit] [autoit]
Global $chkbox[100]
Global $Info[100]
Global $Txt[100]; Je nachdem wieviel Unterordner es gibt wird hier die Schleife durchlaufen und die Checkboxen werden angelegt
[/autoit] [autoit][/autoit] [autoit]
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; Button für den Start
[/autoit] [autoit][/autoit] [autoit]
$cmdStart = GUICtrlCreateButton("Gewählte &Installationen starten", 16, $Element, 161, 33, 0)
GUICtrlSetOnEvent(-1, "Install"); Button für das beenden
[/autoit] [autoit][/autoit] [autoit]
$cmdClose = GUICtrlCreateButton("Programm &schliessen", 208, $Element, 161, 33, 0)
GUICtrlSetOnEvent(-1, "ProgEnde")
GUISetState(@SW_SHOW); Dauerschleife für den OnEventModus
[/autoit] [autoit][/autoit] [autoit]
While 1
Sleep(10)
WEnd#region Funktionen
[/autoit] [autoit][/autoit] [autoit]; Programm beenden
[/autoit] [autoit][/autoit] [autoit]
Func ProgEnde()
Exit
EndFunc; Hier wird Installaton aufgerufen, es wird gegenzeichnet ob sie OK war und dann wird die nächste aufgerufen, etc.
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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; Zum einen ziehe ich mir hier die Anzahl der Ordner zum anderen wird geprüft ob es die passende Datei gibt
[/autoit] [autoit][/autoit] [autoit]
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; Wenn die Suche ausgeführt werden konnte
[/autoit]
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 -
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 -
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 -
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 -
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: EKEScript 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 etcGUICtrlCreateLabel("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
EndSelectSelect
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
EndSelectSelect
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
EndSelectSelect
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)
EndIfCase Else
EndSelectSelect
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 EndeGUISetState(@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
ExitCase $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")
EndSelectGUISetState(@SW_RESTORE)
Case $Button4
ExitCase $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)
EndSelectCase $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)
EndSelectCase $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
WEndDanke 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
[/autoit]
;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)Btw: vllt würden mehr helfen, wenn das Skript in AutoIt - Tags stände, da dann die Kommentare besser sichtbar sind
-
danke für die hilfe...aber es geht immer noch nicht!!
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#cs ----------------------------------------------------------------------------AutoIt Version: 3.2.10.0
[/autoit] [autoit][/autoit] [autoit]
Author: EKEScript Function:
[/autoit] [autoit][/autoit] [autoit]
Software Installer#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]; Start
[/autoit] [autoit][/autoit] [autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>$Form = GUICreate("Bitte auswaehlen", 500, 300)
[/autoit] [autoit][/autoit] [autoit]GUICtrlCreateLabel("Programme:", 10, 10, 120, 20)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
;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)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
;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
[/autoit] [autoit][/autoit] [autoit]
$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 etcGUICtrlCreateLabel("Updates:", 400, 10)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
;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)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
;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
[/autoit] [autoit][/autoit] [autoit]
; Run the GUI until the dialog is closed$wert = 220
[/autoit] [autoit][/autoit] [autoit]
WinSetTrans($Form, "", $wert)While 1
[/autoit] [autoit][/autoit] [autoit]
$msg = GUIGetMsg()Switch $msg
[/autoit] [autoit][/autoit] [autoit]Case $Button1
[/autoit] [autoit][/autoit] [autoit]
;Prüfen ob eines der Programme vorhanden ist
GUISetState (@SW_SHOW)Select
[/autoit] [autoit][/autoit] [autoit]
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
EndSelectSelect
[/autoit] [autoit][/autoit] [autoit]
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
EndSelectSelect
[/autoit] [autoit][/autoit] [autoit]
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
EndSelectSelect
[/autoit] [autoit][/autoit] [autoit]
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)
EndIfCase Else
[/autoit] [autoit][/autoit] [autoit]
EndSelectSelect
[/autoit] [autoit][/autoit] [autoit]
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 EndeGUISetState(@SW_RESTORE)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Case $Button2
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
For $i = $Checkbox1 To $Checkbox5
GUICtrlSetState($i, $GUI_Checked)
Next
Case $Button3
For $i = $Checkbox1 To $Checkbox5
GUICtrlSetState($i, $GUI_Unchecked)
Next
Case $Button4
ExitCase $Button5
[/autoit] [autoit][/autoit] [autoit]GUISetState (@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]Select
[/autoit] [autoit][/autoit] [autoit]
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")
EndSelectGUISetState(@SW_RESTORE)
[/autoit] [autoit][/autoit] [autoit]Case $Button4
[/autoit] [autoit][/autoit] [autoit]
ExitCase $Button6
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
;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)
EndSelectCase $Button7
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
; 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)
EndSelectCase $Update1
[/autoit] [autoit][/autoit] [autoit]
Run ("C:\autoit\bla.exe")Case $Update2
[/autoit] [autoit][/autoit] [autoit]
;HIer sollte eigentlich ein neues GUI aufgehen mit dem man über die Auswahl von MySQL 4 oder 5 entscheiden kann!Case $Update3
[/autoit] [autoit][/autoit] [autoit]
Run ("C:\autoit\bla.exe")Case $Update4
[/autoit] [autoit][/autoit] [autoit]
Run ("C:\autoit\bla.exe")Case $Update5
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Run ("C:\autoit\bla.exe")ExitLoop
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$output = ''
[/autoit] [autoit][/autoit] [autoit]For $x = 1 To 5 Step 1
[/autoit]
If GUICtrlRead(Eval("check" & $x)) = $GUI_CHECKED Then $output = $output & ControlGetText($Form, '', Eval("check" & $x)) & @CRLF
Next
msgbox(0,"",$output)
EndSwitch
WEnd -
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
-
Hey, in dem Code ist aber meine Änderung nicht drin. Hast du das wirklich ausprobiert?
-