Hallo zusammen.
Ich benutze seit geraumer Zeit (1/2 Jahr) AutoIT um einige Softwarepackete bei uns zu verteilen. Bis jetzt habe ich das immer mittels MSGBoxen gemacht. Nun will ich das aber etwas "schöner" via GUI machen.
Dazu habe ich nun ein Skript erstellt, welches verschiedene Updates durchführen solll. Nur leider fehler mir ein paar Hintergrundinformationen, die ich noch nicht im Tutorial gefunden habe bzw. die ich nicht verstehe.
Habe meine Probleme bzw. Ideen als Kommentare im Skript eingefügt.
Probleme:
keine
naja, ist zwar noch einiges offen, aber dass wird erst mit Version 2 realisiert
Und da das Packet hier im Haus verteilt werden muß, ist erst mal ende mit Coden.
Sobalt wieder Zeit dafür ist, gehts weiter.
teiloffen:
- Zeitschleife für Fertig Button *neu* (siehe unten)
Auf Grund von Zeitmangel erst einmal keine weitere Fehlersuche.
Button wird in der aktuellen Version nur noch zum Testen des Skripts verwendet.
gelöst:
- bestimmten Laufbalken benutzen und darstellen
- Nach Beendigung einer Funktion ein "Fertig" Text an entsprechender Stelle anzeigen lassen
- passende IF Abfrage erstellen
- Darstellungsproblem bei Aufruf von einem Fenster (Beenden), wenn $WS_CAPTION, $WS_EX_TOPMOST bei GUI gesetzt ist
- Topmost Problem bei Laufbalken bestand zwar immer noch, aber durch das Anpassen der Fenster Optionen bleibt der Laufbalken im Vordergrund, so wie es "fast" sein sollte.
Alter Code
Spoiler anzeigen
;
; AutoIt Version: 3.0
; Platform: WinXP
; Author: Iwu
;
; Script Function:
; Update Pack
;
#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]#region - Seite1
; Seite 1
$Seite01 = GUICreate("Update Pack", 641, 481, 201, 131) ;, $WS_CAPTION, $WS_EX_TOPMOST) Funktioniert nicht mit der _exit Funktion, da diese dann nicht mehr angezeigt wird
$Ueberschrift = GUICtrlCreateLabel("Update Pack 01 - 2007", 30, 30, 396, 36)
GUICtrlSetFont(-1, 20, 800, 0, "Arial")
$Logo = GUICtrlCreatePic("D:\temp\script\Logo_klein.jpg", 430, 15, 200, 41, BitOR($SS_NOTIFY,$WS_GROUP))
$Testzeile01 = GUICtrlCreateLabel("Dieses Update Pack wird Windows XP, Office XP und den Adobe Reader auf den", 30, 110, 572, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
$Textzeile02 = GUICtrlCreateLabel("aktuellsten Stand bringen.", 30, 140, 182, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
$Textzeile03 = GUICtrlCreateLabel("Das Update wird ca. 10 Minuten dauern und wird am Ende einen Neustart machen.", 30, 170, 574, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
$Texstzeile04 = GUICtrlCreateLabel("Sie können während dieser Zeit zwar weiter arbeiten, aber es wäre ratsam, wenn", 30, 200, 561, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
$Textzeile05 = GUICtrlCreateLabel("Sie warten, bis das Update beendet ist.", 30, 230, 277, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
$Textzeile06 = GUICtrlCreateLabel("Drücken Sie bitte den START Knopf um den Update-Vorgang zu starten.", 30, 275, 503, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
$Textzeile07 = GUICtrlCreateLabel("Sie können aber mittels des Abrechen Knopfes das Update bis zum nächsten", 30, 305, 538, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
$Textzeile08 = GUICtrlCreateLabel("Neustart verhindern.", 30, 335, 142, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
$StartButton01 = GUICtrlCreateButton("START", 110, 400, 100, 50, 0)
GUICtrlSetFont(-1, 12, 800, 0, "Arial")
$AbbrechenButton01 = GUICtrlCreateButton("Abrechen", 430, 400, 100, 50, 0)
GUICtrlSetFont(-1, 12, 800, 0, "Arial")
#endregion - Seite1
#region - Seite2
; Seite 2
$Seite02 = GUICreate("Update Pack", 641, 481, 201, 131) ;, $WS_CAPTION, $WS_EX_TOPMOST) Funktioniert nicht mit der _exit Funktion, da diese dann nicht mehr angezeigt wird
$Ueberschrift = GUICtrlCreateLabel("Update Pack 01 - 2007", 30, 30, 396, 36)
GUICtrlSetFont(-1, 20, 800, 0, "Arial")
$Logo = GUICtrlCreatePic("D:\temp\script\Logo_klein.jpg", 430, 15, 200, 41, BitOR($SS_NOTIFY,$WS_GROUP))
$UpdateXP = GUICtrlCreateLabel("Update Windows XP", 30, 110, 149, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
$LaufbalkenXP = GUICtrlCreateProgress(240, 110, 150, 15)
$UpdateOfficeXP = GUICtrlCreateLabel("Update Office XP", 30, 160, 126, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
$LaufbalkenOffice = GUICtrlCreateProgress(240, 160, 150, 15)
$UpdateAccesRT = GUICtrlCreateLabel("Update Access Runtime", 30, 210, 172, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
$LaufbalkenAccessRT = GUICtrlCreateProgress(240, 210, 150, 15)
$UpdateAcrobatR = GUICtrlCreateLabel("Update Acrobat Reader", 30, 260, 170, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
$LaufbalkenAcrobatR = GUICtrlCreateProgress(240, 260, 150, 15)
$UpdateFertigButton01 = GUICtrlCreateButton("Fertig", 245, 384, 150, 50, 0)
GUICtrlSetFont(-1, 12, 800, 0, "Arial")
$FertigXP = GUICtrlCreateLabel("Fertig", 410, 110, 37, 20) ; Anzeigen wenn Update fertig ist
GUICtrlSetFont(-1, 10, 400, 2, "Arial")
$FertigOffice = GUICtrlCreateLabel("Fertig", 410, 160, 37, 20) ; Anzeigen wenn Update fertig ist
GUICtrlSetFont(-1, 10, 400, 2, "Arial")
$FertigAccesR = GUICtrlCreateLabel("Fertig", 410, 210, 37, 20) ; Anzeigen wenn Update fertig ist
GUICtrlSetFont(-1, 10, 400, 2, "Arial")
$FertigAcrobat = GUICtrlCreateLabel("Fertig", 410, 260, 37, 20) ; Anzeigen wenn Update fertig ist
GUICtrlSetFont(-1, 10, 400, 2, "Arial")
#endregion - Seite2
#region - Seite3
; Seite 3
$Seite03 = GUICreate("Update Pack", 641, 481, 201, 131) ;, $WS_CAPTION, $WS_EX_TOPMOST) Funktioniert nicht mit der _exit Funktion, da diese dann nicht mehr angezeigt wird
$Ueberschrift = GUICtrlCreateLabel("Update Pack 01 - 2007", 30, 30, 396, 36)
GUICtrlSetFont(-1, 20, 800, 0, "Arial")
$Logo = GUICtrlCreatePic("D:\temp\script\Logo_klein.jpg", 430, 15, 200, 41, BitOR($SS_NOTIFY,$WS_GROUP))
$Testzeile01 = GUICtrlCreateLabel("Die Updates wurden erfolgreich angewendet.", 30, 110, 316, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
$Textzeile02 = GUICtrlCreateLabel("Es wird jetzt ein Neustart durchgeführt.", 30, 170, 267, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
$Textzeile03 = GUICtrlCreateLabel("Bitte speichern Sie Ihre Daten ab und beenden alle Programme., da es sonst", 30, 230, 534, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
$Textzeile04 = GUICtrlCreateLabel("zu Datenverlust kommt.", 30, 260, 164, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
$OKButton01 = GUICtrlCreateButton("OK", 270, 300, 100, 50, 0)
GUICtrlSetFont(-1, 12, 800, 0, "Arial")
$BeendenZaehler = GUICtrlCreateProgress(210, 420, 200, 20)
$Textzeile05 = GUICtrlCreateLabel("Der Rechner wird in 60 Sekunden Neugestartet", 170, 380, 340, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
#endregion - Seite3
#region - Seite anzeigen
; Erste Seite anzeigen
GUISetState(@SW_SHOW, $Seite01 )
#endregion - Seite anzeigen
#region - Scribt Abarbeitung
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $StartButton01 ; wenn der Start Button gedrückt wird, dann öffnet er Seite02
GUISetState( @SW_SHOW, $Seite02 ) ;öffnet Seite02
GUISetState( @SW_HIDE, $Seite01 ) ;versteckt Seite01
Case $AbbrechenButton01 ; wenn der Abbrechen Button gedrückt wird, dann soller der die Funktion _EXIT aufrufen
_Exit( $Seite01 )
Case $UpdateFertigButton01 ; öffnet Seite 3
GUISetState( @SW_SHOW, $Seite03 ) ;öffnet Seite03
GUISetState( @SW_HIDE, $Seite02 ) ;versteckt Seite02
Case $OKButton01
;~ _60Sek
;~ Funktion _60Sek aufrufen und Laufbalken anzeigen
;~ Shutdown (2)
Exit
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
#endregion - Script Abarbeitung
#region - Funktionen
Func _Exit( $GUI ) ; Bringt eine Meldung, ob wirklich beendet werden soll
GUISetState( @SW_ENABLE, $GUI )
$Box = MsgBox( 4 , "Updade abbrechen" , "Wenn Sie jetzt das Update abbrechen, wir es beim nächsten Neustart wieder gestartet" & @CRLF & @CRLF & "bis es durchgeführt wurde." & @CRLF & @CRLF & "Wirklich beenden?")
If $Box = 6 Then
Exit
ElseIf $Box = 7 Then
GUISetState( @SW_ENABLE, $GUI )
EndIf
EndFunc
;~ @SW_ENABLE verursacht Probleme mit $WS_CAPTION, $WS_EX_TOPMOST bei den Fenstern
Func _AcrobatReaderInstall()
; If Abfrage einbauen, damit er kontrolliert ob schon die neueste Version installiert ist und wenn ja, gleich den Laufbalen auf 100 setzten
; und anstatt "Fertig" "schon installiert" anzeigt
; Adobe Prozess beenden falls geöffnet
ProcessClose("AcroRd32.exe")
$PID = ProcessExists("AcroRd32.exe")
If $PID Then ProcessClose($PID)
; Deinstallation Adobe Reader 7
RunWait("C:\WINDOWS\system32\msiexec.exe /x{AC76BA86-7AD7-1031-7B44-A70700000002} /qb", "", @SW_MINIMIZE)
; Sleep(1000)
; ProgressSet(50)
; Installation Adobe Reader 8
RunWait("C:\Temp\Install\AdobeReader8\Setup.exe /msi/t acroread.mst /qb /l AcroRead%computername%.txt", "", @SW_MINIMIZE)
; Sleep(1000)
; ProgressSet(100)
; $FertigAccesR = GUICtrlCreateLabel("Fertig", 410, 210, 37, 20)
; GUICtrlSetFont(-1, 10, 400, 2, "Arial")
; **********
;Während der Installation soll er den Laufbalken ($LaufbalkenXP) bewegen und zum Schluß den Fertig Text ($FertigAcrobat) anzeigen
; **********
; weiter Idee wäre noch, dass er über
EndFunc
Func _AccessRuntimeUpdate()
; If Abfrage einbauen und kontrolieren ob Update schon installiert (Registry Key) und wenn ja zum nächsten springen
; AccessRuntime beenden falls geöffnet
ProcessClose("MSACCESS.EXE")
$PID = ProcessExists("MSACCESS.EXE")
If $PID Then ProcessClose($PID)
; Startet Access UpdatePacks
RunWait("C:\Temp\Install\AccessRuntime\ArtSP3op.msp /q", "", @SW_HIDE)
; Sleep(1000)
; ProgressSet(20)
RunWait("C:\Temp\Install\AccessRuntime\officexp-KB904018-FullFile-DEU.exe /q:a", "", @SW_HIDE)
; Sleep(1000)
; ProgressSet(40)
RunWait("C:\Temp\Install\AccessRuntime\officexp-KB934705-FullFile-DEU.exe /q:a", "", @SW_HIDE)
; Sleep(1000)
; ProgressSet(60)
RunWait("C:\Temp\Install\AccessRuntime\ArtSP3op.msp /q", "", @SW_HIDE)
; Sleep(1000)
; ProgressSet(80)
RunWait("C:\Temp\Install\AccessRuntime\ArtSP3op.msp /q", "", @SW_HIDE)
; Sleep(1000)
; ProgressSet(100)
; $FertigAccesR = GUICtrlCreateLabel("Fertig", 410, 210, 37, 20)
; GUICtrlSetFont(-1, 10, 400, 2, "Arial")
; **********
; Während der Installation soll er den Laufbalken ($LaufbalkenAccessRT) bewegen und zum Schluß den Fertig Text ($FertigAccesR) anzeigen
; **********
EndFunc
Func _WinXPUpdate()
; If Abfrage einbauen und kontrolieren ob Update schon installiert ist (Registry Key Abfrage) und wenn ja zum nächsten springen
; Startet WindowsXP Updates
RunWait("C:\Temp\Install\WindowsXP-SP2\Udate01\WindowsXP-KB927891-v3-x86-DEU.exe /quiet /norestart /nobackup", "", @SW_HIDE)
; Sleep(1000)
; ProgressSet(16)
RunWait("C:\Temp\Install\WindowsXP-SP2\Udate01\WindowsXP-KB929123-x86-DEU.exe /quiet /norestart /nobackup", "", @SW_HIDE)
; Sleep(1000)
; ProgressSet(32)
RunWait("C:\Temp\Install\WindowsXP-SP2\Udate01\WindowsXP-KB930916-x86-DEU.exe /quiet /norestart /nobackup", "", @SW_HIDE)
; Sleep(1000)
; ProgressSet(48)
RunWait("C:\Temp\Install\WindowsXP-SP2\Udate01\WindowsXP-KB933566-x86-DEU.exe /quiet /norestart /nobackup", "", @SW_HIDE)
; Sleep(1000)
; ProgressSet(64)
RunWait("C:\Temp\Install\WindowsXP-SP2\Udate01\WindowsXP-KB935839-x86-DEU.exe /quiet /norestart /nobackup", "", @SW_HIDE)
; Sleep(1000)
; ProgressSet(80)
RunWait("C:\Temp\Install\WindowsXP-SP2\Udate01\WindowsXP-KB935840-x86-DEU.exe /quiet /norestart /nobackup", "", @SW_HIDE)
; Sleep(1000)
; ProgressSet(100)
; $FertigXP = GUICtrlCreateLabel("Fertig", 410, 110, 37, 20)
; GUICtrlSetFont(-1, 10, 400, 2, "Arial")
; **********
; Während der Installation soll er den Laufbalken ($LaufbalkenAccessRT) bewegen und zum Schluß den Fertig Text ($FertigXP) anzeigen
; **********
EndFunc
Func _OfficeUpdate()
; If Abfrage ob Office mit oder ohne Access installiert ist (MSAccess im Ordner C:\Programme\Microsoft Office\Office10)
; Ohne Access
RunWait("\\Zfdserv1\PUB001\snapshot\programme\OfficeXP\SETUP.EXE TRANSFORMS=\\Zfdserv1\PUB001\snapshot\programme\OfficeXP\Standart.MST /qb-", "", @SW_HIDE)
; Sleep(1000)
; ProgressSet(100)
; Mit Access
;~ $FertigOffice = GUICtrlCreateLabel("Fertig", 410, 160, 37, 20) ; Anzeigen wenn Update fertig ist
;~ GUICtrlSetFont(-1, 10, 400, 2, "Arial")
RunWait("\\Zfdserv1\PUB001\snapshot\programme\OfficeXP\SETUP.EXE TRANSFORMS=\\Zfdserv1\PUB001\snapshot\programme\OfficeXP\Std-Plus-Access.MST /qb-", "", @SW_HIDE)
; Sleep(1000)
; ProgressSet(100)
;~ $FertigOffice = GUICtrlCreateLabel("Fertig", 410, 160, 37, 20) ; Anzeigen wenn Update fertig ist
;~ GUICtrlSetFont(-1, 10, 400, 2, "Arial")
EndFunc
func _60Sek()
;~ *** Funktion aus Beispiel, nur es soll kein eigenes Fenster angezeigt werden, sondern der Laufbalken ($BeendenZaehler)
ProgressOn("Progress Meter", "Increments every second", "0 percent")
For $i = 1 to 60 step 1
sleep(1000)
ProgressSet( $i)
Next
ProgressSet(100 , "Done", "Complete")
sleep(500)
ProgressOff()
EndFunc
#endregion - Funktionen
[/autoit]Aktuellster Code:
Spoiler anzeigen
;
; AutoIt Version: 3.0
; Platform: WinXP
; Author: Iwu
;
; Script Function:
; Update Pack
;
AutoItSetOption("TrayIconHide",1)
[/autoit] [autoit][/autoit] [autoit]#region - Global
Global $Paused
$Version = 0.8
#endregion - Global
;===============================================================
;===============================================================
#region - Dateien ins Skript einbinden
;~ FileInstall("H:\Auto-IT\Scripte\UpdatePack\Logo_klein.jpg", "C:\Temp\Install\UpdatePacks\Logo_klein.jpg", 1)
#endregion - Dateien ins Skript einbinden
;===============================================================
;===============================================================
#region - HotKeys
HotKeySet("{PAUSE}", "TogglePause") ;Skript wird unterbrochen und zeigt ToolTip an
HotKeySet("{ESC}", "_Exit") ;zeigt Abbrechen Fenster an
HotKeySet("{F1}", "Info") ; zeigt Hilfe Fenster an
HotKeySet("^!x", "_AdminExit") ; beendet Skript, wenn Strg+Alt+X gedrückt wird
#endregion - HotKeys
;===============================================================
;===============================================================
#include <GuiConstants.au3>
Opt("GUIOnEventMode", 1) ; Wechsle in den OnEvent Modus
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
[/autoit] [autoit][/autoit] [autoit]#region - Seite1
$Seite01 = GUICreate("Update Pack", 641, 481, -1, -1, $WS_CAPTION, $WS_EX_TOPMOST)
$Ueberschrift = GUICtrlCreateLabel("Update Pack 01 - 2007", 30, 30, 400, 36)
GUICtrlSetFont(-1, 20, 800, 0, "Arial")
$Logo = GUICtrlCreatePic("C:\Temp\Install\UpdatePacks\Logo_klein.jpg", 430, 15, 200, 41, BitOR($SS_NOTIFY,$WS_GROUP))
$GraphicS1_1 = GUICtrlCreateGraphic(20, 100, 600, 280)
GUICtrlSetBkColor(-1, 0xC0C0C0)
GUICtrlSetColor(-1, 0x000000)
$S1_Zeile01 = GUICtrlCreateLabel("Dieses Update Pack wird Windows XP, Office XP und den Adobe Reader auf den", 30, 110, 570, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$S1_Zeile02 = GUICtrlCreateLabel("aktuellen Stand bringen.", 30, 140, 570, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$S1_Zeile03 = GUICtrlCreateLabel("Das Update wird ca. 10 Minuten dauern und wird am Ende einen Neustart", 30, 170, 570, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$S1_Zeile04 = GUICtrlCreateLabel("auslösen.", 30, 200, 570, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$S1_Zeile05 = GUICtrlCreateLabel("Sie können während dieser Zeit zwar weiter arbeiten, es ist aber ratsam,", 30, 230, 570, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$S1_Zeile06 = GUICtrlCreateLabel("Sie warten, bis das Update beendet ist.", 30, 260, 570, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$S1_Zeile07 = GUICtrlCreateLabel("Drücken Sie bitte den START-Knopf um den Update-Vorgang zu starten.", 30, 290, 570, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$S1_Zeile08 = GUICtrlCreateLabel("Sie können aber mittels des Abbrechen-Knopfes das Update bis zum nächsten", 30, 320, 570, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$S1_Zeile09 = GUICtrlCreateLabel("Neustart verhindern.", 30, 350, 570, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$StartButton01 = GUICtrlCreateButton("START", 50, 400, 100, 50, 0)
GUICtrlSetFont(-1, 12, 800, 0, "Arial")
GUICtrlSetColor(-1, 0x008080)
GUICtrlSetBkColor(-1, 0xC0C0C0)
GUICtrlSetOnEvent($StartButton01, "Seite01_OK")
$AbbrechenButton01 = GUICtrlCreateButton("Abbrechen", 260, 400, 100, 50, 0)
GUICtrlSetFont(-1, 12, 800, 0, "Arial")
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlSetBkColor(-1, 0xC0C0C0)
GUICtrlSetOnEvent($AbbrechenButton01, "_Exit")
$HilfeButton01 = GUICtrlCreateButton("Hilfe", 470, 400, 100, 50, 0)
GUICtrlSetFont(-1, 12, 800, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
GUICtrlSetOnEvent($HilfeButton01, "Hilfe")
#endregion - Seite1
#region - Seite2
$Seite02 = GUICreate("Update Pack", 641, 481, -1, -1, $WS_CAPTION,$WS_EX_APPWINDOW); $WS_EX_TOPMOST)
;~ GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
$Ueberschrift = GUICtrlCreateLabel("Update Pack 01 - 2007", 30, 30, 396, 36)
GUICtrlSetFont(-1, 20, 800, 0, "Arial")
$Logo = GUICtrlCreatePic("C:\Temp\Install\UpdatePacks\Logo_klein.jpg", 430, 15, 200, 41, BitOR($SS_NOTIFY,$WS_GROUP))
$GraphicS2_1 = GUICtrlCreateGraphic(168, 100, 308, 270)
GUICtrlSetBkColor(-1, 0xC0C0C0)
GUICtrlSetColor(-1, 0x000000)
$GraphicS2_2 = GUICtrlCreateGraphic(168, 380, 308, 60)
GUICtrlSetBkColor(-1, 0xC0C0C0)
GUICtrlSetColor(-1, 0x000000)
$UpdateXP = GUICtrlCreateLabel("Update Windows XP", 180, 110, 149, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$UpdateOfficeXP = GUICtrlCreateLabel("Update Office XP", 180, 140, 126, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$UpdateAccesRT = GUICtrlCreateLabel("Update Access Runtime", 180, 310, 172, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$UpdateAcrobatR = GUICtrlCreateLabel("Update Acrobat Reader", 180, 340, 170, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
;******** Für Testzwecke wird ein Fertig Button eingefügt ******
;~ $UpdateFertigButton01 = GUICtrlCreateButton("Fertig", 220, 384, 200, 50, 0)
;~ GUICtrlSetFont(-1, 12, 800, 0, "Arial")
;~ GUICtrlSetOnEvent($UpdateFertigButton01, "Seite2_Fertig")
;~ GUICtrlSetState($UpdateFertigButton01, $GUI_DISABLE) ;Am Ende der letzten Funktion wird der Button wieder aktiviert
;***************************************************************
$Fertig = GUICtrlCreateLabel("Updates werden ausgeführt", 185, 400, 270, 22) ; siehe unten in der funktion
GUICtrlSetFont(-1, 12, 800, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$FertigXP = GUICtrlCreateLabel(" ", 410, 110, 37, 20) ; siehe unten in der funktion
GUICtrlSetFont(-1, 10, 400, 2, "Arial")
GUICtrlSetColor(-1, 0x008080)
GUICtrlSetBkColor(-1, 0xC0C0C0)
$FertigOffice = GUICtrlCreateLabel(" ", 410, 140, 37, 20) ; siehe unten in der funktion
GUICtrlSetFont(-1, 10, 400, 2, "Arial")
GUICtrlSetColor(-1, 0x008080)
GUICtrlSetBkColor(-1, 0xC0C0C0)
$FertigAccesR = GUICtrlCreateLabel(" ", 410, 310, 37, 20) ; siehe unten in der funktion
GUICtrlSetFont(-1, 10, 400, 2, "Arial")
GUICtrlSetColor(-1, 0x008080)
GUICtrlSetBkColor(-1, 0xC0C0C0)
$FertigAcrobat = GUICtrlCreateLabel(" ", 410, 340, 37, 20) ; siehe unten in der funktion
GUICtrlSetFont(-1, 10, 400, 2, "Arial")
GUICtrlSetColor(-1, 0x008080)
GUICtrlSetBkColor(-1, 0xC0C0C0)
#endregion - Seite 2
#region -Seite 3
$Seite03 = GUICreate("Update Pack", 641, 481, -1, -1, $WS_CAPTION, $WS_EX_TOPMOST)
;~ GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
$Ueberschrift = GUICtrlCreateLabel("Update Pack 01 - 2007", 30, 30, 396, 36)
GUICtrlSetFont(-1, 20, 800, 0, "Arial")
$Logo = GUICtrlCreatePic("C:\Temp\Install\UpdatePacks\Logo_klein.jpg", 430, 15, 200, 41, BitOR($SS_NOTIFY,$WS_GROUP))
$GraphicS3_1 = GUICtrlCreateGraphic(20, 100, 600, 290)
GUICtrlSetBkColor(-1, 0xC0C0C0)
GUICtrlSetColor(-1, 0x000000)
$S3_Zeile01 = GUICtrlCreateLabel("Die Updates wurden erfolgreich installiert.", 30, 110, 570, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$S3_Zeile02 = GUICtrlCreateLabel("Bitte speichern Sie alle Daten und beenden alle Programme, da es sonst", 30, 170, 570, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$S3_Zeile03 = GUICtrlCreateLabel("zu Datenverlust kommen kann.", 30, 200, 570, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$S3_Zeile04 = GUICtrlCreateLabel("Bitte lösen Sie jetzt einen Neustart aus (Knopf unten).", 30, 260, 570, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$S3_Zeile05 = GUICtrlCreateLabel("_______________", 30, 300, 570, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$S3_Zeile06 = GUICtrlCreateLabel("Informationslogistik", 30, 320, 570, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$S3_Zeile07 = GUICtrlCreateLabel("Team System", 30, 340, 570, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$S3_Zeile08 = GUICtrlCreateLabel("wu2", 30, 360, 570, 22)
GUICtrlSetFont(-1, 12, 400, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
$Neustart = GUICtrlCreateButton("Neustart", 270, 410, 80, 50,0)
GUICtrlSetFont(-1, 12, 800, 0, "Arial")
GUICtrlSetBkColor(-1, 0xC0C0C0)
GUICtrlSetOnEvent($Neustart, "Neustart2")
#endregion - Seite 3
;===============================================================
;===============================================================
#region - Startet erste Seite
GuiSetState(@SW_SHOW, $Seite01)
#endregion - Startet erste Seite
;===============================================================
;===============================================================
#region - Schleife
While 1
Sleep (1000)
WEnd
Exit
#endregion - Schleife
;===============================================================
;===============================================================
#region - Funktion Seite 1
func Seite01_OK()
GUISetState( @SW_SHOW, $Seite02 ) ;öffnet Seite02
GUISetState( @SW_HIDE, $Seite01 ) ;versteckt Seite01
Sleep(1000)
WinXPUpdate()
GUICtrlSetData($FertigXP, "Fertig") ;setzt Windows XP auf Fertig
OfficeUpdate()
GUICtrlSetData($FertigOffice, "Fertig") ; setzt Office XP auf Fertig
AccessRuntimeUpdate()
GUICtrlSetData($FertigAccesR, "Fertig") ; setzt Acces auf Fertig
AcrobatReaderInstall()
GUICtrlSetData($FertigAcrobat, "Fertig") ; setzt Acrobat auf Fertig
_qchain()
Sleep(3000)
GUICtrlSetData($Fertig, "Alle Updates wurden durchgeführt") ; bringt Fertig Meldung
Sleep(5000)
;~ GUICtrlSetState ($UpdateFertigButton01, $GUI_Enable) ; hier wird er Button wieder aktiviert
;~ _20SekButton() ; Zeitschleife für FertigButton
Seite2_Fertig()
EndFunc
#endregion - Funktion Seite 1
;---------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]#region - Funktion Seite 2
func Seite2_Fertig()
GUISetState( @SW_SHOW, $Seite03 ) ;öffnet Seite03
GUISetState( @SW_HIDE, $Seite02 ) ;versteckt Seite02
EndFunc
#endregion - Funktion Seite 2
;---------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]#region - Funktion Seite 3
Func Neustart()
sleep(500)
ProgressOn("Neustart", "Laufzeit", "0 Sek bis Neustart")
For $i = 1 to 60 step 1
sleep(1000)
ProgressSet ($i, $i & " Sekunden bis Neustart")
Next
ProgressSet (100 , "Laufzeit", "Neustart wird ausgelöst")
sleep(1000)
ProgressOff()
Shutdown (2)
Exit
EndFunc
;---------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]Func Neustart2()
sleep (2000)
Shutdown (2)
Exit
EndFunc
#endregion - Funktion Seite 3
;===============================================================
;===============================================================
#region - Installationen
[/autoit] [autoit][/autoit] [autoit]Func WinXPUpdate()
GUICtrlSetData($FertigXP, "läuft") ;setzt Windows XP auf läuft
ProgressOn("Installation Windows XP Updates", "Fortschritt", "0 Prozent", -1, -1, 16)
Sleep(1000)
RunWait("C:\Temp\Install\WindowsXP-SP2\Pack01-07\WindowsXP-KB927891-v3-x86-DEU.exe /quiet /norestart /nobackup", "", @SW_HIDE)
ProcessWaitClose("update.exe")
Sleep(1000)
ProgressSet (16, 16 & "Prozent")
Sleep(1000)
RunWait("C:\Temp\Install\WindowsXP-SP2\Pack01-07\WindowsXP-KB929123-x86-DEU.exe /quiet /norestart /nobackup", "", @SW_HIDE)
ProcessWaitClose("update.exe")
Sleep(1000)
ProgressSet (32, 32 & "Prozent")
RunWait("C:\Temp\Install\WindowsXP-SP2\Pack01-07\WindowsXP-KB930916-x86-DEU.exe /quiet /norestart /nobackup", "", @SW_HIDE)
Sleep(1000)
ProcessWaitClose("update.exe")
Sleep(1000)
ProgressSet (48, 48 & "Prozent")
RunWait("C:\Temp\Install\WindowsXP-SP2\Pack01-07\WindowsXP-KB933566-x86-DEU.exe /quiet /norestart /nobackup", "", @SW_HIDE)
Sleep(1000)
ProcessWaitClose("update.exe")
Sleep(1000)
ProgressSet (64, 64 & "Prozent")
RunWait("C:\Temp\Install\WindowsXP-SP2\Pack01-07\WindowsXP-KB935839-x86-DEU.exe /quiet /norestart /nobackup", "", @SW_HIDE)
Sleep(1000)
ProcessWaitClose("update.exe")
Sleep(1000)
ProgressSet (80, 80 & "Prozent")
RunWait("C:\Temp\Install\WindowsXP-SP2\Pack01-07\WindowsXP-KB935840-x86-DEU.exe /quiet /norestart /nobackup", "", @SW_HIDE)
Sleep(1000)
ProcessWaitClose("update.exe")
Sleep(1000)
ProgressSet (100 , "Fertig", "Beendet")
sleep(500)
ProgressOff()
EndFunc
;---------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]Func OfficeUpdate()
GUICtrlSetData($FertigOffice, "läuft") ; setzt Office XP auf läuft
ProcessClose("MSACCESS.EXE") ; Access beenden falls geöffnet
$PID = ProcessExists("MSACCESS.EXE")
If $PID Then ProcessClose($PID)
sleep(500)
ProcessClose("WINWORD.EXE") ; Word beenden falls geöffnet
$PID = ProcessExists("WINWORD.EXE")
If $PID Then ProcessClose($PID)
sleep(500)
ProcessClose("EXCEL.EXE") ; Excel beenden falls geöffnet
$PID = ProcessExists("EXCEL.EXE")
If $PID Then ProcessClose($PID)
sleep(500)
; Startet Office Update
ProgressOn("Installation Office XP Updates", "Fortschritt", "0 Prozent", -1, -1, 16)
ProgressSet (5, 5 & "Prozent")
If FileExists("C:\Programme\Microsoft Office\Office10\MSACCESS.EXE") Then
RunWait(@ComSpec & " /c " & "start \\Zfdserv1\PUB001\snapshot\programme\OfficeXP\SETUP.EXE" & " TRANSFORMS=\\Zfdserv1\PUB001\snapshot\programme\OfficeXP\Std-Plus-Access.MST" & " /qb-", "", @SW_HIDE)
Sleep(1000)
Else
RunWait(@ComSpec & " /c " & "start \\Zfdserv1\PUB001\snapshot\programme\OfficeXP\SETUP.EXE" & " TRANSFORMS=\\Zfdserv1\PUB001\snapshot\programme\OfficeXP\Standart.MST" & " /qb-", "", @SW_HIDE)
Sleep(10000)
EndIf
sleep(8000)
WinWaitClose("Microsoft Office XP Professional") ;Wartet bis das Setup Fenster geschlossen ist
ProgressSet (100 , "Fertig", "Beendet")
sleep(500)
ProgressOff()
EndFunc
;---------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]Func AccessRuntimeUpdate()
GUICtrlSetData($FertigAccesR, "läuft") ; setzt Acces auf läuft
ProcessClose("MSACCESS.EXE") ; AccessRuntime beenden falls geöffnet
$PID = ProcessExists("MSACCESS.EXE")
If $PID Then ProcessClose($PID)
; Startet Access UpdatePacks
ProgressOn("Installation Access Runtime Updates", "Fortschritt", "0 Prozent", -1, -1, 16)
ProgressSet (5, 5 & "Prozent")
Sleep(1000)
RunWait(@ComSpec & " /c " & "start C:\Temp\Install\AccessRuntime\ArtSP3op.msp" & " /q","", @SW_HIDE)
Sleep(10000)
ProgressSet (20, 20 & "Prozent")
RunWait(@ComSpec & " /c " & "start C:\Temp\Install\AccessRuntime\officexp-KB904018-FullFile-DEU.exe" & " /q:a", "", @SW_HIDE)
Sleep(2000)
ProcessWaitClose("officexp-KB904018-FullFile-DEU.exe")
Sleep(2000)
ProgressSet (40, 40 & "Prozent")
RunWait(@ComSpec & " /c " & "start C:\Temp\Install\AccessRuntime\officexp-KB920821-FullFile-DEU.exe" & " /q:a", "", @SW_HIDE)
Sleep(2000)
ProcessWaitClose("officexp-KB920821-FullFile-DEU.exe")
Sleep(2000)
ProgressSet (60, 60 & "Prozent")
RunWait(@ComSpec & " /c " & "start C:\Temp\Install\AccessRuntime\officexp-KB934705-FullFile-DEU.exe" & " /q", "", @SW_HIDE)
Sleep(2000)
ProcessWaitClose("officexp-KB934705-FullFile-DEU.exe")
Sleep(2000)
ProgressSet (80, 80 & "Prozent")
RunWait(@ComSpec & " /c " & "start C:\Temp\Install\AccessRuntime\officexp-KB920816-FullFile-DEU.exe" & " /q", "", @SW_HIDE)
Sleep(2000)
ProcessWaitClose("KB920816-FullFile-DEU.exe")
Sleep(2000)
ProgressSet (100 , "Fertig", "Beendet")
sleep(500)
ProgressOff()
EndFunc
;---------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]Func AcrobatReaderInstall()
GUICtrlSetData($FertigAcrobat, "läuft") ; setzt Acrobat auf läuft
if FileExists("C:\Programme\Adobe\Acrobat\Acrobat.exe") then
MsgBox(262208, "Acrobat", "Auf Ihrem PC befindet sich die Vollversion von Acrobat." & @CRLF & @CRLF & "Aus diesem Grund wird KEIN Acrobat Reader installiert.",10)
Else
$t = FileGetTime("C:\Programme\Adobe\Reader\AcroRd32.exe", 1)
If $t[0] = 2006 & $t[1] = 12 Then ;***** wie bekomme ich ein kleine gleich hin? <= geht nett *****
ProcessClose("AcroRd32.exe"); Adobe Prozess beenden falls geöffnet
$PID = ProcessExists("AcroRd32.exe")
If $PID Then ProcessClose($PID)
ProgressOn("Installation Access Updates", "Fortschritt", "0 Prozent", -1, -1, 16)
; Deinstallation Adobe Reader 7
RunWait("C:\WINDOWS\system32\msiexec.exe /x{AC76BA86-7AD7-1031-7B44-A70700000002} /qb", "", @SW_HIDE)
Sleep(1000)
WinWaitClose("Windows Installer")
ProgressSet (50, 50 & "Prozent")
; Installation Adobe Reader 8
RunWait("C:\Temp\Install\Adobe\Reader8_1\Setup.exe /msi/t acroread.mst /qb /l AcroRead%computername%.txt", "", @SW_HIDE)
Sleep(1000)
WinWaitClose("Adobe Reader 8.1.0 - Assistent")
ProgressSet (100 , "Fertig", "Beendet")
sleep(500)
ProgressOff()
Else
MsgBox(262208, "Acrobat", "Auf Ihrem PC befindet sich schon die aktuelle Acrobat Reader Version.",5)
EndIf
EndIf
EndFunc
;---------------------------------------------------------------
func _qchain()
; Überprüft Updates auf die Aktualität, so das nicht ein aktueller Patch von einem alten überschrieben wird.
Sleep(500)
RunWait(@ComSpec & " /c " & "start C:\Temp\Install\UpdatePacks\qchain.exe" & " C:\Temp\Install\UpdatePacks\%computername%.log", "", @SW_HIDE)
Sleep(500)
EndFunc
#endregion - Installationen
;===============================================================
;===============================================================
#region - Generelle Funktionen
;******** Beenden mit Nachfrage = ESC oder Abbrechen oder auf X im Fenster
Func _Exit()
$Box = MsgBox( 262452 , "Updade abbrechen" , "Wenn Sie jetzt das Update abbrechen, wird es beim nächsten Neustart wieder gestartet." &@CRLF & @CRLF & "Wirklich beenden?")
If $Box = 6 Then
Exit
EndIf
EndFunc
;---------------------------------------------------------------
;******** Skript per Hotkey beenden = Strg + Alt + X **********
Func _AdminExit()
Exit
EndFunc
;---------------------------------------------------------------
;******** Skript per Hotkey pausieren = Pause Taste **********
Func TogglePause()
$Paused = NOT $Paused
While $Paused
sleep(100)
ToolTip('Script is "Paused"',0,0)
WEnd
ToolTip("")
EndFunc
;---------------------------------------------------------------
;******** Info *************************************************
Func Info() ; Zeigt Hilfe Fenster an
MsgBox(262208,"Info","Update Pack 01 - 07"&@CRLF&"Version: " & $Version &@CRLF&"Erstellt: Juli 2007"&@CRLF&"Ersteller: wu2"&@CRLF&"Abteilung: Informationslogistik"&@CRLF&""&@CRLF&"Mit freundlicher Unterstützung von leviathan"&@CRLF&"aus dem AutoIT Forum"&@CRLF&"www.Autoit.de")
EndFunc
;---------------------------------------------------------------
;******** Hilfe ************************************************
Func Hilfe()
MsgBox(262176,"Hilfe","Haben Sie Fragen zu diesem Update-Paket")
EndFunc
;---------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit];******** Warteschleife Fertig Button **************************
;**** geht aber nicht ****
;~ Func _20SekButton() ; Zeitschleife für FertigButton
;~ $f = 0
;~ While $f <= 20
;~ $msg = GUIGetMsg()
;~ If $msg = $UpdateFertigButton01 Then Seite2_Fertig()
;~ Sleep (1000)
;~ $f = $f + 1
;~ WEnd
;~ EndFunc
;---------------------------------------------------------------
#endregion - Generelle Funktionen
;===============================================================
;===============================================================
Ich hoffe Ihr könnt mit helfen.
@ leviathan Danke für deine geleistete Hilfe