Hilfe bei Erstellung von einem Update Pack

  • 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]

    ;
    ; AutoIt Version: 3.0
    ; Platform: WinXP
    ; Author: Iwu
    ;
    ; Script Function:
    ; Update Pack
    ;

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

    #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

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

    #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

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

    #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

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

    #region - Seite anzeigen
    ; Erste Seite anzeigen
    GUISetState(@SW_SHOW, $Seite01 )
    #endregion - Seite anzeigen

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

    #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

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

    EndSwitch
    WEnd
    #endregion - Script Abarbeitung

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

    #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

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

    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

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

    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

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

    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

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

    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

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

    #endregion - Funktionen

    [/autoit]

    Aktuellster Code:

    Spoiler anzeigen
    [autoit]


    ;
    ; AutoIt Version: 3.0
    ; Platform: WinXP
    ; Author: Iwu
    ;
    ; Script Function:
    ; Update Pack
    ;

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

    AutoItSetOption("TrayIconHide",1)

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

    #region - Global
    Global $Paused
    $Version = 0.8
    #endregion - Global

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

    ;===============================================================
    ;===============================================================

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

    #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

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

    ;===============================================================
    ;===============================================================

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

    #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

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

    ;===============================================================
    ;===============================================================

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

    #include <GuiConstants.au3>
    Opt("GUIOnEventMode", 1) ; Wechsle in den OnEvent Modus

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

    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

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

    #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

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

    #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

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

    ;===============================================================
    ;===============================================================

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

    #region - Startet erste Seite
    GuiSetState(@SW_SHOW, $Seite01)
    #endregion - Startet erste Seite

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

    ;===============================================================
    ;===============================================================

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

    #region - Schleife
    While 1
    Sleep (1000)
    WEnd
    Exit
    #endregion - Schleife

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

    ;===============================================================
    ;===============================================================

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

    #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]

    ;---------------------------------------------------------------

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

    ;---------------------------------------------------------------

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

    ;---------------------------------------------------------------

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

    Func Neustart2()
    sleep (2000)
    Shutdown (2)
    Exit
    EndFunc
    #endregion - Funktion Seite 3

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

    ;===============================================================
    ;===============================================================

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

    #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]

    ;---------------------------------------------------------------

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

    ;---------------------------------------------------------------

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

    ;---------------------------------------------------------------

    [/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)

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

    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
    ;---------------------------------------------------------------

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

    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

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

    ;===============================================================
    ;===============================================================

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

    #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
    ;---------------------------------------------------------------

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

    ;******** Skript per Hotkey beenden = Strg + Alt + X **********
    Func _AdminExit()
    Exit
    EndFunc
    ;---------------------------------------------------------------

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

    ;******** Skript per Hotkey pausieren = Pause Taste **********
    Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
    sleep(100)
    ToolTip('Script is "Paused"',0,0)
    WEnd
    ToolTip("")
    EndFunc
    ;---------------------------------------------------------------

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

    ;******** 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
    ;---------------------------------------------------------------

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

    ;******** Hilfe ************************************************
    Func Hilfe()
    MsgBox(262176,"Hilfe","Haben Sie Fragen zu diesem Update-Paket")
    EndFunc

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

    ;---------------------------------------------------------------

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

    ;******** Warteschleife Fertig Button **************************
    ;**** geht aber nicht :( ****

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

    ;~ 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
    ;---------------------------------------------------------------

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

    #endregion - Generelle Funktionen
    ;===============================================================
    ;===============================================================

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

    Ich hoffe Ihr könnt mit helfen.


    @ leviathan Danke für deine geleistete Hilfe

  • also bei längeren Sourcecodes einfach

    auf das Ding mit den [] drücken
    oder [SPOILER.]text[/SPOILER.] ohne die Punkte

    Spoiler anzeigen

    text

    und daneben ist das AutoItzeichen: [AUTOIT.];code[/AUTOIT.]

    [autoit]

    ;code

    [/autoit]

    code schau ich mir gerade an
    edit:
    also es ist schwierig den aktuellen Prozess einer Installation abzufragen - da würde ich eher empfehlen nur eine Progressbar zu machen und halt dann wenn eins Fertig ist den Progressset auf 25 tüdeln hier mal die Veränderungen

    hab auch mal die Exit-Funktion getüdelt

    Spoiler anzeigen
    [autoit]


    ;
    ; AutoIt Version: 3.0
    ; Platform: WinXP
    ; Author: Iwu
    ;
    ; Script Function:
    ; Update Pack
    ;

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

    #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

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

    #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")
    GUICtrlSetState ($UpdateFertigButton01, $GUI_DISABLE) ;Am Ende der letzten Funktion wird der Button wieder aktiviert
    $FertigXP = GUICtrlCreateLabel("läuft", 410, 110, 37, 20) ; siehe unten in der funktion
    GUICtrlSetFont(-1, 10, 400, 2, "Arial")
    $FertigOffice = GUICtrlCreateLabel("läuft", 410, 160, 37, 20) ; siehe unten in der funktion
    GUICtrlSetFont(-1, 10, 400, 2, "Arial")
    $FertigAccesR = GUICtrlCreateLabel("läuft", 410, 210, 37, 20) ; siehe unten in der funktion
    GUICtrlSetFont(-1, 10, 400, 2, "Arial")
    $FertigAcrobat = GUICtrlCreateLabel("läuft", 410, 260, 37, 20) ; siehe unten in der funktion
    GUICtrlSetFont(-1, 10, 400, 2, "Arial")
    #endregion - Seite2

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

    #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"&@CRLF&"zu Datenverlust kommt.", 30, 230, 534, 22); @CRLF erzeugt eine neue Zeile
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    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

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

    #region - Seite anzeigen
    ; Erste Seite anzeigen
    GUISetState(@SW_SHOW, $Seite01 )
    #endregion - Seite anzeigen

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

    #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

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

    EndSwitch
    WEnd
    #endregion - Script Abarbeitung

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

    #region - Funktionen
    Func _Exit($GUI) ; Bringt eine Meldung, ob wirklich beendet werden soll
    GUISetState(@SW_Hide, $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_SHOW, $GUI)
    EndIf
    EndFunc
    ;~ @SW_ENABLE verursacht Probleme mit $WS_CAPTION, $WS_EX_TOPMOST bei den Fenstern

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

    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
    GUICtrlSetData($FertigAcrobat, "Fertig")
    GUICtrlSetState ($UpdateFertigButton01, $GUI_DISABLE) ; hier wird er Button wieder aktiviert
    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
    ; **********
    GUICtrlSetData($FertigAccesR, "Fertig")
    EndFunc

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

    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
    ; **********
    GUICtrlSetData($FertigXP, "Fertig")
    EndFunc

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

    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)
    ;~ GUICtrlSetFont(-1, 10, 400, 2, "Arial")
    GUICtrlSetData($FertigOffice, "Fertig")
    EndFunc

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

    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

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

    #endregion - Funktionen

    [/autoit]

    Einmal editiert, zuletzt von leviathan (29. Juni 2007 um 14:36)

  • - Exit Funktion
    Oh so einfach ist das :)

    - Laufbalken
    Ich hatte mir halt vorgestellt das er einfach den Progressset nach den einzelnen Päckchen weiter gibt. k.A. ob das geht?
    Damit wollte ich den Anwender Informieren, was gerade passiert und gleichzeit anzeigen, wie lange es noch dauert. Anwender sind doch immer so ungeduldig :)
    Außerdem kann ich so kontrollieren wie weit die Installation ist und ob es irgendwo ein Problem gibt/gab.
    Die Frage für mich ist immer noch, wie gebe ich Werte an einen GUI erstellen Progress und lasse in "laufen"?

  • ja eben das ist das Problem man könnte natürlich über

    AdlibEnable
    --------------------------------------------------------------------------------

    Enables Adlib functionality.

    [autoit]


    AdlibEnable ( "function" [, time] )

    [/autoit]


    Parameters

    function The name of the adlib function to call.
    time [optional] how often in milliseconds to call the function. Default is 250 ms.


    Return Value

    None.

    Remarks

    Every 250 ms (or time ms) the specified "function" is called--typically to check for unforeseen errors. For example, you could use adlib in a script which causes an error window to pop up unpredictably.
    The adlib function should be kept simple as it is executed often and during this time the main script is paused. Also, the time parameter should be used carefully to avoid CPU load.

    Related

    AdlibDisable, Call

    Example

    [autoit]


    AdlibEnable("myadlib")
    ;...
    Exit

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

    Func myadlib()
    If WinActive("Error") Then
    ;...
    EndIf
    EndFunc

    [/autoit]


    abfragen -.-

    Einmal editiert, zuletzt von leviathan (29. Juni 2007 um 15:01)

  • nur damit ich das Richtig verstehe, ich kann also nicht mehrmals ProgressSet mit aufsteigenden Werten weiter geben?

    z.B.
    ProgressSet(10)
    ProgressSet(50)
    ProgressSet(100)

    Wenn dem nicht so ist, ...schade schade schade ...

    Ich weiß ja, dass Runwait+Programmaufruf funktioniert. Es soll ja nur grafisch dargestellt werden.
    Mehr was fürs Auge anstatt Fehlerkontrolle :)

    Übrigens Danke für deine schnelle Hilfe.
    Für mich als Unwissenden, nicht Programmierer und auch noch Fremdsprachenlegasteniker ist es nicht einfach damit klar zu kommen. :)
    Vorstellungen und Programmierrichtlinien beissen sich ab und zu :)

  • Hoffe schönes WE gehabt zu haben.

    Bin heute wieder am rumbasteln, abe scheinbar zu blöd um das zu raffen.
    http://www.autoit.de/images/smilies/crying.gif
    traurig

    Ich weiß bis jetzt immer noch nicht, wie ich den ProgressSet an mein GUI erstellten Laufbalken übergeben soll.

    Hab hier ein Beispiel zum testen

    Spoiler anzeigen
    [autoit]


    HotKeySet("{ESC}", "_Exit") ;zeigt Abbrechen Fenster an

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

    #include <GuiConstants.au3>
    Opt("GUIOnEventMode", 1) ; Wechsle in den OnEvent Modus

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

    GuiCreate("MyGUI", 400, 320,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    $Button_1 = GuiCtrlCreateButton("Knopf", 100, 70, 170, 40)
    GUICtrlSetOnEvent($Button_1, "Button1")

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

    GUISetState(@SW_SHOW)

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

    While 1
    Sleep (1000)
    WEnd

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

    func Button1()
    $Progress_1 = GuiCtrlCreateProgress(100, 250, 170, 20)
    ProgressOn("Progress Meter", "Increments every second", "0 percent")
    For $i = 10 to 100 step 20
    sleep(1000)
    ProgressSet ($i)
    Next
    ProgressSet (100 , "Done", "Complete")
    sleep(500)
    ProgressOff()
    EndFunc

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

    Func _Exit() ; Bringt eine Meldung, ob wirklich beendet werden soll
    $Box = MsgBox( 262452 , "Abbrechen", "Wirklich beenden?")
    If $Box = 6 Then
    Exit
    EndIf
    EndFunc

    [/autoit]

    Ich möchte aber nicht ein extra Fenster haben sondern halt mein eigenen $Progress_1 laufen lassen.


    Außerdem sagtest du, dass es möglich ist, den ProgressSet Wert zu bestimmten Zeiten zu übermitteln. Wie geht?http://www.autoit.de/images/smilies/confused.gif
    verwirrt


    Idee:

    runwait tralala
    ProgressSet (25)
    runwait tralala2
    ProgressSet (50)
    runwait tralala3
    ProgressSet (75)
    runwait tralala4
    ProgressSet (100)

    Während dieser ganzen Zeit sollte er den Balken nach der Übergabe des Wertes "weiter laufen" lassen. Ich denke das muß alles in einer Schleife laufen.

    Bitte bitte gebt einen Unwissenden Hilfe

  • geht leider nicht einfach dann das weiterlaufen zu lassen bzw vielleicht schon aber nicht sehr einfach

  • Habe nochmal meinen "Code" etwas verändert.

    Hier das Ergebniss:

    Spoiler anzeigen
    [autoit]


    ;
    ; AutoIt Version: 3.0
    ; Platform: WinXP
    ; Author: Iwu
    ;
    ; Script Function:
    ; Update Pack
    ;

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

    #region - Global
    Global $Paused
    #endregion - Global

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

    #region - HotKeys
    HotKeySet("{PAUSE}", "TogglePause") ;Skript wird unterbrochen und zeigt ToolTip an
    HotKeySet("{ESC}", "_Exit") ;zeigt Abbrechen Fenster an
    HotKeySet("{F1}", "ShowHelp") ; zeigt Hilfe Fenster an
    HotKeySet("^!x", "_AdminExit") ; beendet Skript, wenn Strg+Alt+X gedrückt wird
    #endregion - HotKeys

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

    #include <GuiConstants.au3>
    Opt("GUIOnEventMode", 1) ; Wechsle in den OnEvent Modus

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

    #region - Seite1
    ; Seite 1
    $Seite01 = GUICreate("Update Pack", 641, 481, 201, 131, $WS_CAPTION, $WS_EX_TOPMOST)
    $Ueberschrift = GUICtrlCreateLabel("Update Pack 01 - 2007", 30, 30, 396, 36)
    GUICtrlSetFont(-1, 20, 800, 0, "Arial")
    $Logo = GUICtrlCreatePic("D:\temp\script\UpdatePack\Logo_klein.jpg", 430, 15, 200, 41, BitOR($SS_NOTIFY,$WS_GROUP))
    $S1_Zeile01 = 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")
    $S1_Zeile02 = GUICtrlCreateLabel("aktuellsten Stand bringen.", 30, 140, 182, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $S1_Zeile03 = 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")
    $S1_Zeile04 = 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")
    $S1_Zeile05 = GUICtrlCreateLabel("Sie warten, bis das Update beendet ist.", 30, 230, 277, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $S1_Zeile06 = GUICtrlCreateLabel("Drücken Sie bitte den START Knopf um den Update-Vorgang zu starten.", 30, 275, 503, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $S1_Zeile07 = 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")
    $S1_Zeile08 = 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")
    GUICtrlSetOnEvent($StartButton01, "Seite01_OK")
    $AbbrechenButton01 = GUICtrlCreateButton("Abrechen", 430, 400, 100, 50, 0)
    GUICtrlSetFont(-1, 12, 800, 0, "Arial")
    GUICtrlSetOnEvent($AbbrechenButton01, "_Exit")
    #endregion - Seite1

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

    #region - Seite2
    ; Seite 2
    $Seite02 = GUICreate("Update Pack", 641, 481, 201, 131, $WS_CAPTION, $WS_EX_TOPMOST)
    $Ueberschrift = GUICtrlCreateLabel("Update Pack 01 - 2007", 30, 30, 396, 36)
    GUICtrlSetFont(-1, 20, 800, 0, "Arial")
    $Logo = GUICtrlCreatePic("D:\temp\script\UpdatePack\Logo_klein.jpg", 430, 15, 200, 41, BitOR($SS_NOTIFY,$WS_GROUP))
    $UpdateXP = GUICtrlCreateLabel("Update Windows XP", 180, 110, 149, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    ;~ $LaufbalkenXP = GUICtrlCreateProgress(240, 110, 150, 15)
    $UpdateOfficeXP = GUICtrlCreateLabel("Update Office XP", 180, 140, 126, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    ;~ $LaufbalkenOffice = GUICtrlCreateProgress(240, 160, 150, 15)
    $UpdateAccesRT = GUICtrlCreateLabel("Update Access Runtime", 180, 310, 172, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    ;~ $LaufbalkenAccessRT = GUICtrlCreateProgress(240, 210, 150, 15)
    $UpdateAcrobatR = GUICtrlCreateLabel("Update Acrobat Reader", 180, 340, 170, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    ;~ $LaufbalkenAcrobatR = GUICtrlCreateProgress(240, 260, 150, 15)
    $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
    $FertigXP = GUICtrlCreateLabel("läuft", 410, 110, 37, 20) ; siehe unten in der funktion
    GUICtrlSetFont(-1, 10, 400, 2, "Arial")
    $FertigOffice = GUICtrlCreateLabel("läuft", 410, 140, 37, 20) ; siehe unten in der funktion
    GUICtrlSetFont(-1, 10, 400, 2, "Arial")
    $FertigAccesR = GUICtrlCreateLabel("läuft", 410, 310, 37, 20) ; siehe unten in der funktion
    GUICtrlSetFont(-1, 10, 400, 2, "Arial")
    $FertigAcrobat = GUICtrlCreateLabel("läuft", 410, 340, 37, 20) ; siehe unten in der funktion
    GUICtrlSetFont(-1, 10, 400, 2, "Arial")
    #endregion - Seite 2

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

    #region -Seite 3
    $Seite03 = GUICreate("Update Pack", 641, 481, 201, 131, $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("D:\temp\script\UpdatePack\Logo_klein.jpg", 430, 15, 200, 41, BitOR($SS_NOTIFY,$WS_GROUP))
    $S3_Zeile01 = GUICtrlCreateLabel("Die Updates wurden erfolgreich angewendet.", 30, 110, 316, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $S3_Zeile02 = GUICtrlCreateLabel("Es wird jetzt ein Neustart durchgeführt.", 30, 170, 267, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $S3_Zeile03 = GUICtrlCreateLabel("Bitte speichern Sie Ihre Daten ab und beenden alle Programme, da es sonst", 30, 230, 534, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $S3_Zeile04 = GUICtrlCreateLabel("zu Datenverlust kommt.", 30, 260, 534, 22); (@CRLF erzeugt eine neue Zeile) passt aber nicht mit den Abständen :)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $Neustart = GUICtrlCreateButton("Neustart", 270, 320, 100, 50,0)
    GUICtrlSetFont(-1, 12, 800, 0, "Arial")
    GUICtrlSetOnEvent($Neustart, "Neustart")
    $Progress_2 = GuiCtrlCreateProgress(250, 410, 140, 20)
    #endregion - Seite 3

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

    #region - Startet erste Seite
    GuiSetState(@SW_SHOW, $Seite01)
    #endregion - Startet erste Seite

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

    #region - Schleife
    While 1
    Sleep (1000)
    WEnd
    Exit
    #endregion - Schleife

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

    ;---------------------------------------------------------------
    #region - Funktion Seite 1
    func Seite01_OK()
    GUISetState( @SW_SHOW, $Seite02 ) ;öffnet Seite02
    GUISetState( @SW_HIDE, $Seite01 ) ;versteckt Seite01

    ProgressOn("Installation Windows XP Updates", "Fortschritt", "0 Prozent")
    For $i = 10 to 100 step 20
    sleep(1000)
    ProgressSet ($i, $i & "Prozent")
    Next
    ProgressSet (100 , "Fertig", "Beendet")
    sleep(500)
    ProgressOff()
    ;*************************
    ;************************* Wie rufe ich hier meine Installationen auf, wie z.B. Funtion Office Update???
    ;************************* Was ist Ratsam ????
    ;************************* Alles in eine Packen ist eher Fehleranfällig oder??
    ;*************************

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

    GUICtrlSetData($FertigXP, "Fertig") ;setzt Windows XP läuft auf Fertig

    ProgressOn("Installation Office XP Updates", "Fortschritt", "0 Prozent")
    For $i = 10 to 100 step 20
    sleep(1000)
    ProgressSet ($i, $i & "Prozent")
    Next
    ProgressSet (100 , "Fertig", "Beendet")
    sleep(500)
    ProgressOff()

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

    GUICtrlSetData($FertigOffice, "Fertig") ; setzt Office XP auf Fertig

    ProgressOn("Installation Access Updates", "Fortschritt", "0 Prozent")
    For $i = 10 to 100 step 20
    sleep(1000)
    ProgressSet ($i, $i & "Prozent")
    Next
    ProgressSet (100 , "Fertig", "Beendet")
    sleep(500)
    ProgressOff()

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

    GUICtrlSetData($FertigAccesR, "Fertig") ; setzt Acces auf Fertig

    ProgressOn("Installation Acrobat Updates", "Fortschritt", "0 Prozent")
    For $i = 10 to 100 step 20
    sleep(1000)
    ProgressSet ($i, $i & "Prozent")
    Next
    ProgressSet (100 , "Fertig", "Beendet")
    sleep(500)
    ProgressOff()

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

    GUICtrlSetData($FertigAcrobat, "Fertig") ; setzt Acrobat auf Fertig

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

    GUICtrlSetState ($UpdateFertigButton01, $GUI_Enable) ; hier wird er Button wieder aktiviert (GUI_ENABLE NICHT $GUI_DISABLE :)
    EndFunc

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

    #endregion - Funktion Seite 1
    ;---------------------------------------------------------------
    #region - Funktion Seite 2
    func Seite2_Fertig()
    GUISetState( @SW_SHOW, $Seite03 ) ;öffnet Seite03
    GUISetState( @SW_HIDE, $Seite02 ) ;versteckt Seite02
    ;~ InstWinXP
    EndFunc

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

    #endregion - Funktion Seite 2
    ;---------------------------------------------------------------
    #region - Funktion Seite 3
    Func Neustart()
    Sleep(1000)
    ProgressOn("Neustart", "Laufzeit", "0 Sek bis Neustart")
    For $i = 10 to 100 step 20
    sleep(1000)
    ProgressSet ($i, $i & "Sek bis Neustart")
    Next
    ProgressSet (100 , "Laufzeit", "Neustart wird ausgeführt")
    sleep(500)
    ProgressOff()
    ;~ Shutdown (2)
    Exit
    EndFunc
    #endregion - Funktion Seite 3
    ;---------------------------------------------------------------

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

    #region - Installationen
    Func OfficeUpdate()
    If FileExists("C:\Programme\Microsoft Office\Office10\MSACCESS.EXE") Then
    RunWait("\\Zfdserv1\PUB001\snapshot\programme\OfficeXP\SETUP.EXE TRANSFORMS=\\Zfdserv1\PUB001\snapshot\programme\OfficeXP\Standart.MST /qb-", "", @SW_HIDE)
    Sleep(1000)
    ProgressSet($LaufbalkenOffice ,100)
    Else
    RunWait("\\Zfdserv1\PUB001\snapshot\programme\OfficeXP\SETUP.EXE TRANSFORMS=\\Zfdserv1\PUB001\snapshot\programme\OfficeXP\Std-Plus-Access.MST /qb-", "", @SW_HIDE)
    Sleep(1000)
    ProgressSet($LaufbalkenOffice ,100)
    EndIf
    EndFunc

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

    #endregion - Installationen

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

    #region - Generelle Funktionen
    Func _Exit() ; Bringt eine Meldung, ob wirklich beendet werden soll
    $Box = MsgBox( 262452 , "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
    EndIf
    EndFunc

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

    ;********* 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
    ;***************************************************************
    ;----------------------------
    ;********** Hilfe **********
    Func ShowHelp() ; Zeigt Hilfe Fenster an
    MsgBox(262144,"Hilfe","Dies ist das Hilfe Fenster")
    EndFunc
    ;***************************
    #endregion - Generelle Funktionen

    [/autoit]

    Wäre nett, wenn Du/Ihr mal drüber schauen würdet/st und mir noch ein paar Tips geben könntet/st.

    Übrigens du hast bei Deiner Verbesserung 2x $GUI_Disable geschrieben, auch fürs aktivieren. Hat mich etwas Zeit gekostet, war aber stolz, dass ich es doch noch gefunden hatte.
    Hilfe Seite durchforsten bringt doch etwas :)

    So, jetzt erst mal Feierabend und morgen weiter die Haare raufen :)

  • naja war natürlich Absicht, dass du halt auch mal was zu arbeiten hast XD
    also er ist halt schwer oder vllt gar nicht möglich den aktuellen Status eines Prozesses/Installation abzufragen deswegen würde ich das so machen

    [autoit]

    ProgressOn("Installiere", "Fortschritt", "0 Prozent")
    OfficeUpdate()
    ProgressSet (25, 25 & "Prozent")
    bla1()
    ProgressSet (50, 50 & "Prozent")
    bla2()
    ProgressSet (75, 75 & "Prozent")
    bla3()
    ProgressSet (100 , "Fertig", "Beendet")
    ProgressOff()

    [/autoit]

    Einmal editiert, zuletzt von leviathan (2. Juli 2007 um 19:34)

  • So ich mal wieder...

    Bin jetzt fast fertig mit dem Skript.

    Habe jetzt nur noch ne 2 kleine Problem:
    1.
    Der Laufbalken verschwindet wärend der Installation von den Windows XP Patches, d.h. er ist hinter der GUI. Er soll aber davor sein.

    Denke es liegt an dem $WS_EX_TOPMOST von dem GIU. Wenn ich den ändere ist zwar der Laufbalken zu sehen, aber die GUI verschwindet, wenn ich die Fenster wechsel. Dies soll wiederum nicht passieren.

    Welche Option sollte ich dem Fenster bzw. dem Laufbalken geben, damit es funktioniert?
    Also GUI über alles, aber wenn Laufbalken, dann GUI im Hintergrund und darüber Laufbalken. Beide sollen aber trotzdem sichbar bleiben, wenn ich zwischen Fenstsern hin und her switche.

    Eine Idee wäre z.B. wenn die 2 Seite "leicht" tranzparent angezeigt wird, wärend er die Updates ausführt. Ist er dann fertig damit, das GUI wieder "voll" Sichtbar machen. Nur wie mach ich das?

    2.
    Der Fertig Knopf auf der 2 Seiten wird wieder aktiviert, wenn alle Updates durch sind. Soweit so gut, nur wäre es jetzt noch schön, wenn der Button "automatisch" nach einer Zeit von ca. 20 Sek "gedrückt" wird, so dass er zu nächsten Seite springt. Dies soll für den Fall sein, dass kein Benutzer am Arbeitsplatz ist.
    Auch für eine Idee in diesem Fall wäre ich sehr danbar:)

    Eine Erwähnung im Skript ist natürlich Ehrensache :)


    Hier die aktuellste Version

    Spoiler anzeigen
    [autoit]


    ;
    ; AutoIt Version: 3.0
    ; Platform: WinXP
    ; Author: Iwu
    ;
    ; Script Function:
    ; Update Pack
    ;

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

    #region - Global
    Global $Paused
    #endregion - Global

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

    ;===============================================================
    ;===============================================================

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

    #region - HotKeys
    HotKeySet("{PAUSE}", "TogglePause") ;Skript wird unterbrochen und zeigt ToolTip an
    HotKeySet("{ESC}", "_Exit") ;zeigt Abbrechen Fenster an
    HotKeySet("{F1}", "ShowHelp") ; zeigt Hilfe Fenster an
    HotKeySet("^!x", "_AdminExit") ; beendet Skript, wenn Strg+Alt+X gedrückt wird
    #endregion - HotKeys

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

    ;===============================================================
    ;===============================================================

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

    #include <GuiConstants.au3>
    Opt("GUIOnEventMode", 1) ; Wechsle in den OnEvent Modus

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

    #region - Seite1
    $Seite01 = GUICreate("Update Pack", 641, 481, 201, 131, $WS_CAPTION, $WS_EX_TOPMOST)
    $Ueberschrift = GUICtrlCreateLabel("Update Pack 01 - 2007", 30, 30, 396, 36)
    GUICtrlSetFont(-1, 20, 800, 0, "Arial")
    $Logo = GUICtrlCreatePic("D:\temp\script\UpdatePack\Logo_klein.jpg", 430, 15, 200, 41, BitOR($SS_NOTIFY,$WS_GROUP))
    $S1_Zeile01 = 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")
    $S1_Zeile02 = GUICtrlCreateLabel("aktuellsten Stand bringen.", 30, 140, 182, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $S1_Zeile03 = 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")
    $S1_Zeile04 = 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")
    $S1_Zeile05 = GUICtrlCreateLabel("Sie warten, bis das Update beendet ist.", 30, 230, 277, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $S1_Zeile06 = GUICtrlCreateLabel("Drücken Sie bitte den START Knopf um den Update-Vorgang zu starten.", 30, 275, 503, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $S1_Zeile07 = 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")
    $S1_Zeile08 = 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")
    GUICtrlSetOnEvent($StartButton01, "Seite01_OK")
    $AbbrechenButton01 = GUICtrlCreateButton("Abbrechen", 430, 400, 100, 50, 0)
    GUICtrlSetFont(-1, 12, 800, 0, "Arial")
    GUICtrlSetOnEvent($AbbrechenButton01, "_Exit")
    #endregion - Seite1

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

    #region - Seite2
    ; Seite 2
    $Seite02 = GUICreate("Update Pack", 641, 481, 201, 131, $WS_OVERLAPPED)
    $Ueberschrift = GUICtrlCreateLabel("Update Pack 01 - 2007", 30, 30, 396, 36)
    GUICtrlSetFont(-1, 20, 800, 0, "Arial")
    $Logo = GUICtrlCreatePic("D:\temp\script\UpdatePack\Logo_klein.jpg", 430, 15, 200, 41, BitOR($SS_NOTIFY,$WS_GROUP))
    $UpdateXP = GUICtrlCreateLabel("Update Windows XP", 180, 110, 149, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $UpdateOfficeXP = GUICtrlCreateLabel("Update Office XP", 180, 140, 126, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $UpdateAccesRT = GUICtrlCreateLabel("Update Access Runtime", 180, 310, 172, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $UpdateAcrobatR = GUICtrlCreateLabel("Update Acrobat Reader", 180, 340, 170, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $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
    $FertigXP = GUICtrlCreateLabel(" ", 410, 110, 37, 20) ; siehe unten in der funktion
    GUICtrlSetFont(-1, 10, 400, 2, "Arial")
    $FertigOffice = GUICtrlCreateLabel(" ", 410, 140, 37, 20) ; siehe unten in der funktion
    GUICtrlSetFont(-1, 10, 400, 2, "Arial")
    $FertigAccesR = GUICtrlCreateLabel(" ", 410, 310, 37, 20) ; siehe unten in der funktion
    GUICtrlSetFont(-1, 10, 400, 2, "Arial")
    $FertigAcrobat = GUICtrlCreateLabel(" ", 410, 340, 37, 20) ; siehe unten in der funktion
    GUICtrlSetFont(-1, 10, 400, 2, "Arial")
    #endregion - Seite 2

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

    #region -Seite 3
    $Seite03 = GUICreate("Update Pack", 641, 481, 201, 131, $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("D:\temp\script\UpdatePack\Logo_klein.jpg", 430, 15, 200, 41, BitOR($SS_NOTIFY,$WS_GROUP))
    $S3_Zeile01 = GUICtrlCreateLabel("Die Updates wurden erfolgreich angewendet.", 30, 110, 316, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $S3_Zeile02 = GUICtrlCreateLabel("Es wird jetzt ein Neustart durchgeführt.", 30, 170, 267, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $S3_Zeile03 = GUICtrlCreateLabel("Bitte speichern Sie alle Daten und beenden alle Programme, da es sonst", 30, 230, 534, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $S3_Zeile04 = GUICtrlCreateLabel("zu Datenverlust kommen kann.", 30, 260, 534, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $S3_Zeile05 = GUICtrlCreateLabel("_______________", 30, 330, 534, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $S3_Zeile06 = GUICtrlCreateLabel("Informationslogistik", 30, 350, 534, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $S3_Zeile07 = GUICtrlCreateLabel("Team System", 30, 370, 534, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $S3_Zeile07 = GUICtrlCreateLabel("wu2", 30, 390, 534, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    $Neustart = GUICtrlCreateButton("Neustart", 270, 400, 100, 50,0)
    GUICtrlSetFont(-1, 12, 800, 0, "Arial")
    GUICtrlSetOnEvent($Neustart, "Neustart")
    #endregion - Seite 3

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

    ;===============================================================
    ;===============================================================

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

    #region - Startet erste Seite
    GuiSetState(@SW_SHOW, $Seite01)
    #endregion - Startet erste Seite

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

    ;===============================================================
    ;===============================================================

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

    #region - Schleife
    While 1
    Sleep (1000)
    WEnd
    Exit
    #endregion - Schleife

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

    ;===============================================================
    ;===============================================================

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

    #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()
    GUICtrlSetState ($UpdateFertigButton01, $GUI_Enable) ; hier wird er Button wieder aktiviert
    EndFunc
    #endregion - Funktion Seite 1

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

    ;---------------------------------------------------------------

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

    ;---------------------------------------------------------------

    [/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 & " Sek bis Neustart")
    Next
    ProgressSet (100 , "Laufzeit", "Neustart wird ausgeführt")
    sleep(1000)
    ProgressOff()
    ;~ Shutdown (2)
    Exit
    EndFunc
    #endregion - Funktion Seite 3

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

    ;===============================================================
    ;===============================================================

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

    #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")
    Sleep(1000)
    RunWait("C:\Temp\Install\WindowsXP-SP2\Udate01\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\Udate01\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\Udate01\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\Udate01\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\Udate01\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\Udate01\WindowsXP-KB935840-x86-DEU.exe /quiet /norestart /nobackup", "", @SW_HIDE)
    Sleep(1000)
    ProcessWaitClose("update.exe")
    Sleep(1000)
    ProgressSet (100 , "Fertig", "Beendet")
    ProgressOff()
    EndFunc

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

    ;---------------------------------------------------------------

    [/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")
    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
    WinWaitClose("Microsoft Office XP Professional") ;Wartet bis das Setup Fenster geschlossen ist
    ProgressSet (100 , "Fertig", "Beendet")
    sleep(500)
    ProgressOff()
    EndFunc

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

    ;---------------------------------------------------------------

    [/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")
    Sleep(1000)
    RunWait(@ComSpec & " /c " & "start C:\Temp\Install\AccessRuntime\ArtSP3op.msp" & " /q","", @SW_MINIMIZE)
    Sleep(1000)
    ProgressSet (25, 25 & "Prozent")
    RunWait(@ComSpec & " /c " & "start C:\Temp\Install\AccessRuntime\officexp-KB904018-FullFile-DEU.exe" & " /q:a", "", @SW_MINIMIZE)
    Sleep(1000)
    ProcessWaitClose("officexp-KB904018-FullFile-DEU.exe")
    Sleep(1000)
    ProgressSet (50, 50 & "Prozent")
    RunWait(@ComSpec & " /c " & "start C:\Temp\Install\AccessRuntime\officexp-KB920821-FullFile-DEU.exe" & " /q:a", "", @SW_MINIMIZE)
    Sleep(1000)
    ProcessWaitClose("officexp-KB920821-FullFile-DEU.exe")
    Sleep(1000)
    ProgressSet (75, 75 & "Prozent")
    RunWait(@ComSpec & " /c " & "start C:\Temp\Install\AccessRuntime\officexp-KB934705-FullFile-DEU.exe" & " /q", "", @SW_MINIMIZE)
    Sleep(1000)
    ProcessWaitClose("officexp-KB934705-FullFile-DEU.exe")
    Sleep(1000)
    ProgressSet (100 , "Fertig", "Beendet")
    sleep(500)
    ProgressOff()
    EndFunc

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

    ;---------------------------------------------------------------

    [/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)

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

    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")
    ; Deinstallation Adobe Reader 7
    RunWait("C:\WINDOWS\system32\msiexec.exe /x{AC76BA86-7AD7-1031-7B44-A70700000002} /qb", "", @SW_MINIMIZE)
    Sleep(1000)
    WinWaitClose("Windows Installer")
    ProgressSet (50, 50 & "Prozent")
    ; Installation Adobe Reader 8
    RunWait("C:\Temp\Install\Adobe\Reader8\Setup.exe /msi/t acroread.mst /qb /l AcroRead%computername%.txt", "", @SW_MINIMIZE)
    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 aktuellste Version.",5)
    EndIf
    EndIf
    EndFunc
    ;---------------------------------------------------------------

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

    func _qchain()
    ; Überprüft Updates auf die Aktualität, so das nicht ein aktueller Patch von einem alten überschrieben wird.
    Sleep(500)
    RunWait("C:\Temp\Install\qchain\qchain.exe C:\Temp\Install\qchain\""%computername%"".log")
    Sleep(500)
    EndFunc
    #endregion - Installationen

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

    ;===============================================================
    ;===============================================================

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

    #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, wir es beim nächsten Neustart wieder gestartet" & @CRLF & @CRLF & "bis es durchgeführt wurde." & @CRLF & @CRLF & "Wirklich beenden?")
    If $Box = 6 Then
    Exit
    EndIf
    EndFunc
    ;---------------------------------------------------------------

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

    ;********* Skript per Hotkey beenden = Strg + Alt + X **********
    Func _AdminExit()
    Exit
    EndFunc
    ;---------------------------------------------------------------

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

    ;********** Skript per Hotkey pausieren = Pause Taste **********
    Func TogglePause()
    $Paused = NOT $Paused
    While $Paused
    sleep(100)
    ToolTip('Script is "Paused"',0,0)
    WEnd
    ToolTip("")
    EndFunc
    ;---------------------------------------------------------------

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

    ;********** Hilfe **********
    Func ShowHelp() ; Zeigt Hilfe Fenster an
    MsgBox(262144,"Hilfe","Update Pack 01 - 07"&@CRLF&"Version: 0.5"&@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
    #endregion - Generelle Funktionen
    ;===============================================================
    ;===============================================================

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • 1. mh also style jetzt ka aber für Transparenz

    [autoit]

    WinSetTrans($Seite02, '', 50)

    [/autoit]

    2. probier mal das nicht getestet:

    [autoit]

    $i = 0
    While $i > 20
    $msg =GUIGetMsg()
    If $msg = $UpdateFertigButton01 Then Seite2_Fertig()
    Sleep (1000)
    $i += 1
    WEnd
    Exit

    [/autoit]