Probleme mit @Error bzw. Error Funktion einbauen

  • Moin moin,

    habe mal wieder ein Installationsscript geschrieben. Funktioniert alles soweit ganz gut, nun will ich aber das Scipt soweit erweitern, dass es noch eine Error Funktion beinhaltet.
    Nur leider funktioniert es irgendwie nicht so wie ich es mir denke, bzw. habe ich eine kleines Verständniss Problem damit.
    Sinn und Zweck des ganzen soll sein, dass einfach ein Fehlercode ausgegeben wird.
    Somit weiß ich dann, um welchen Fehler es sich handelt und kann dann entsprechend reagieren.
    Das ganze Script will ich dann immer wieder verwenden, um unterschiedliche Software zu verteilen.

    Das aktuelle Problem bei dem Scipt ist, dass wenn er die Dateien bei der Runwait Funktion nicht findet, zwar die Meldung raus bringt, das die Dateien nicht da sind, aber nach bestätigen der Fehlermeldung trotzdem mit dem Scipt weiter macht.

    Ich hoffe ihr könnt mir helfen, bzw. ein paar Anzätze geben, wie ich es am besten anstelle.

    Hier mal mein aktuelles Projekt:

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=PDFMAILER-Install.exe
    #AutoIt3Wrapper_Compression=4
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ;
    ; AutoIt Version: 3.2.10
    ; Platform: WinXP
    ; Author: iwu74
    ;
    ; Script Function:
    ; Open Project Installation
    ;

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

    AutoItSetOption("TrayIconHide", 1) ; versteckt das Icon in der Trayleiste, somit keine Funktionionen über Trayicon (beenden etc.)

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

    #region - Global
    Global $Paused
    $ProjectName = "PDFMAILER V4" ; Name des Programms. Wird an alle Fenster weiter gegeben.
    $Version = "0.6"
    $Erstellt = "Mai 2008"
    $Erteller = "wu2"
    $Abteilung = "IL"
    #endregion - Global

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

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

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

    #region - Dateien ins Skript einbinden
    ;~ FileInstall("H:\Auto-IT\Scripte\UpdatePack\Logo_klein.gif", "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> ; Wichtig zum erzeugen von einer GUI (OHNE keine GUI)
    #Include <GuiStatusBar.au3> ; Wichtig zum erzeugen von Statusbar (OHNE kein STATUSBAR)
    Opt("GUIOnEventMode", 1) ; Wechsle in den OnEvent Modus
    Opt("RunErrorsFatal", 0) ;1=fatal, 0=silent set @error

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

    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit") ; Legt fest, was passiert, wenn man das Fenster schließt

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

    #region - Seite1
    ; Erzeugen der Ersten Seite
    $Seite01 = GUICreate($ProjectName, 641, 481, -1, -1, $WS_CAPTION, $WS_EX_TOPMOST)
    $Ueberschrift = GUICtrlCreateLabel($ProjectName & " Installation", 30, 30, 400, 36)
    GUICtrlSetFont(-1, 20, 800, 0, "Arial")
    $Logo = GUICtrlCreatePic("C:\Temp\Install\PDFMailer-V4\Logo_klein.gif", 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("Es wird jetzt der PDFMailer V4 installiert.", 30, 110, 570, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $S1_Zeile03 = GUICtrlCreateLabel("Die Installtion wird ca. 5 Minuten dauern.", 30, 170, 570, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $S1_Zeile04 = GUICtrlCreateLabel("Eventuell vorab installierte Versionen werden gelöscht.", 30, 200, 570, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $S1_Zeile06 = GUICtrlCreateLabel("Am Ende wird ein maxx PDFMailer Drucker in der Druckerliste erscheinen.", 30, 260, 570, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $S1_Zeile08 = GUICtrlCreateLabel("Sie können mittels des Abbrechen-Knopfes die Installation 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
    ; Erzeugen der zweiten Seite
    $Seite02 = GUICreate($ProjectName , 641, 481, -1, -1, $WS_CAPTION, $WS_EX_APPWINDOW)
    $Ueberschrift = GUICtrlCreateLabel($ProjectName & " Installation", 30, 30, 396, 36)
    GUICtrlSetFont(-1, 20, 800, 0, "Arial")
    $Logo = GUICtrlCreatePic("C:\Temp\Install\PDFMailer-V4\Logo_klein.gif", 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)
    $Versionkontrolle = GUICtrlCreateLabel("Versionskontrolle", 180, 110, 149, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $ALTloeschen = GUICtrlCreateLabel("Alte Version löschen", 180, 140, 150 , 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $Install = GUICtrlCreateLabel("Programminstallation", 180, 170, 170, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $Feld_Fertig = GUICtrlCreateLabel(" ", 185, 400, 270, 22)
    GUICtrlSetFont(-1, 12, 800, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $Versionkontrolle_Fertig = GUICtrlCreateLabel(" ", 410, 110, 37, 20) ; siehe unten in der funktion
    GUICtrlSetFont(-1, 10, 400, 2, "Arial")
    GUICtrlSetColor(-1, 0x008080)
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $ALTloeschen_Fertig = GUICtrlCreateLabel(" ", 410, 140, 37, 20)
    GUICtrlSetFont(-1, 10, 400, 2, "Arial")
    GUICtrlSetColor(-1, 0x008080)
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $Install_Fertig = GUICtrlCreateLabel(" ", 410, 170, 37, 20)
    GUICtrlSetFont(-1, 10, 400, 2, "Arial")
    GUICtrlSetColor(-1, 0x008080)
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    #endregion - Seite 2

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

    #region Statusbar Seite 2
    ; Erzeugen eines Statusbar mit 5 Feldern, davon 2 Progressbars
    Local $StatusBar1, $ProgressBar1, $ProgressBar2, $Progress1 = 0, $Progress2 = 0
    Local $a_Parts[5] = [169, 309, 335 , 475, -1] ; ProgressFelder und StartBreite = 140
    $StatusBar1 = _GUICtrlStatusBar_Create ($Seite02); Erzeugt eine Statusbar bei der $Seite02
    _GUICtrlStatusBar_SetMinHeight ($StatusBar1, 20); Setzt die Höhe der Statusbar
    _GUICtrlStatusBar_SetParts ($StatusBar1, $a_Parts) ; Setzt fest, aus wie vielen Teilen die Statusbar bestehen soll
    $progressBar1 = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_SMOOTH) ; Erzeugt einen Prozessbalken
    $progressBar2 = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_SMOOTH) ; Erzeugt einen Prozessbalken
    $hProgress1 = GUICtrlGetHandle($progressBar1) ; Erlaubt das "Händling" des Prozessbalkens
    _GUICtrlStatusBar_EmbedControl ($StatusBar1, 1, $hProgress1) ; legt fest, in welcher Spalte der erste Prozessbalken laufen soll
    $hProgress2 = GUICtrlGetHandle($progressBar2) ; Erlaubt das "Händling" des Prozessbalkens
    _GUICtrlStatusBar_EmbedControl ($StatusBar1, 3, $hProgress2) ; legt fest, in welcher Spalte der zweite Prozessbalken laufen soll
    GUICtrlSetColor($ProgressBar1,32250); setzt die Farbe für den ersten "Laufbalken"
    #endregion Statusbar Seite 2

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

    #region -Seite 3
    ; Erzeugen der dritten Seite
    $Seite03 = GUICreate($ProjectName , 641, 481, -1, -1, $WS_CAPTION, $WS_EX_TOPMOST) ;, $WS_EX_APPWINDOW
    $Ueberschrift = GUICtrlCreateLabel($ProjectName & " Installation", 30, 30, 396, 36)
    GUICtrlSetFont(-1, 20, 800, 0, "Arial")
    $Logo = GUICtrlCreatePic("C:\Temp\Install\PDFMailer-V4\Logo_klein.gif", 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 Software wurde erfolgreich installiert.", 30, 110, 570, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $S3_Zeile02 = GUICtrlCreateLabel("Viel Spaß beim benutzen des Programms.", 30, 170, 570, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $S3_Zeile03 = GUICtrlCreateLabel("Info:", 30, 230, 570, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $S3_Zeile04 = GUICtrlCreateLabel("Sie können jetzt ISO Zertifizierte PDF/A Dateien erzeugen.", 30, 260, 570, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    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)
    $BeendenButton = GUICtrlCreateButton("Beenden", 270, 410, 80, 50, 0)
    GUICtrlSetFont(-1, 12, 800, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    GUICtrlSetOnEvent($BeendenButton, "_AdminExit")
    #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()
    Sleep(1000)
    GUISetState( @SW_SHOW, $Seite02 ) ;öffnet Seite02
    GUISetState( @SW_HIDE, $Seite01 ) ;versteckt Seite01
    Sleep(2000)
    _GUICtrlStatusBar_SetText ($StatusBar1, "Installations Status Gesamt", 4)
    $Progress1 = 0 ; setzt die erste Statusbar auf 0
    $Progress2 = 0 ; setzt die zweite Statusbar auf 0
    ;~ ***********************
    Func_Install()
    ;~ ***********************
    _GUICtrlStatusBar_SetText ($StatusBar1, "Installations beendet", 4)
    _GUICtrlStatusBar_SetText ($StatusBar1, "Installation beendet", 0)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 100)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 100)
    Sleep(2000)
    GUISetState( @SW_SHOW, $Seite03 ) ;öffnet Seite03
    GUISetState( @SW_HIDE, $Seite02 ) ;versteckt Seite02
    EndFunc ;==>Seite01_OK
    #endregion - Funktion Seite 1

    [/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, 60 - $i & " Sekunden bis Neustart")
    Next
    ProgressSet(100, "Laufzeit", "Neustart wird ausgelöst")
    Sleep(1000)
    ProgressOff()
    Shutdown(2)
    Exit
    EndFunc ;==>Neustart

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

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

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

    Func Neustart2()
    Sleep (2000)
    Shutdown (2)
    Exit
    EndFunc ;==>Neustart2
    #endregion - Funktion Seite 3

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

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

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

    #region - Installationen
    ;~ ***************************************************
    Func Func_Install()
    ;===============================================================
    GUICtrlSetData($Feld_Fertig, "Versionskontrolle")
    _GUICtrlStatusBar_SetText ($StatusBar1, "Versionskontrolle", 0)
    GUICtrlSetData($Versionkontrolle_Fertig, "läuft")
    GUICtrlSetData ($ProgressBar1, $Progress1 + 10)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 10)
    $i = 0
    ; Abfragen V3
    RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{528EC8F4-1C19-41BA-80A1-0B5EA21BA628}","DisplayName")
    If @error = 1 then ; Wenn keine Alte Version gefunden wurde, dann 2
    $i = $i + 2
    Else ; Wenn Alte Version gefunden, dann Wert auf 4
    $i = $i + 4
    GUICtrlSetData ($ProgressBar1, $Progress1 + 50)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 20)
    EndIf
    Sleep(1000)
    ; Abfragen V4
    ; ----------------------------------------------------------
    RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{01310914-E3B8-40E8-BCF7-9C42E0639A43}","DisplayName")
    If @error = 1 then ; Wenn keine Neue Version gefunden wurde, dann Wert 8
    $i = $i + 8
    Else ; Wenn Neue Version gefunden wurde, dann Wert 16
    $i = $i + 16
    EndIf
    Sleep(500)
    _GUICtrlStatusBar_SetText ($StatusBar1, "Versionskontrolle beendet", 0)
    GUICtrlSetData($Versionkontrolle_Fertig, "fertig")
    GUICtrlSetData ($ProgressBar1, $Progress1 + 100)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 30)
    Sleep(2000)
    SetError(0)
    Sleep(500)
    ; ******************** Verarbeitung ************************
    Select
    Case $i = 10 ; Alt Nein - Neu Nein / Install
    ; ************ Kein Deinstallation *****************
    Sleep(2000)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 100)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 40)
    GUICtrlSetData($Feld_Fertig, "Deinstallation nicht nötig")
    GUICtrlSetData($ALTloeschen_Fertig, "fertig")
    Sleep(3000)
    ; ************ Installation *****************
    _GUICtrlStatusBar_SetText ($StatusBar1, "Installation", 0)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 10)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 60)
    GUICtrlSetData($Install_Fertig, "läuft")
    GUICtrlSetData($Feld_Fertig, "Installation Version 4.1.40")
    Sleep(2000)
    Sleep(2000)
    _GUICtrlStatusBar_SetText ($StatusBar1, "Installation", 0)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 30)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 70)
    GUICtrlSetData($Install_Fertig, "läuft")
    GUICtrlSetData($Feld_Fertig, "Installation Version 4.1.40")
    Sleep(500)
    RunWait("msiexec /i ""C:\Temp\Install\PDFMailer-V4\pdfmailer4de.msi"" /qn", "", @SW_HIDE)
    If @error = 1 then MsgBox(262160, "Fehlermeldung", "Es ist ein Fehler aufgetreten, bitte melden Sie sich bei der IL", 10); bei Fehler MSGBOX und Exit
    Sleep(2000)
    _GUICtrlStatusBar_SetText ($StatusBar1, "Installation", 0)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 60)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 80)
    GUICtrlSetData($Install_Fertig, "läuft")
    GUICtrlSetData($Feld_Fertig, "Installation Version 4.1.40")
    Sleep(1000)
    RunWait(@COMSPEC & " /c Start C:\Temp\Install\PDFMailer-V4\einst.bat", "", @SW_HIDE)
    If @error = 1 then MsgBox(262160, "Fehlermeldung", "Es ist ein Fehler aufgetreten, bitte melden Sie sich bei der IL", 10); bei Fehler MSGBOX und Exit
    Sleep(2000)
    _GUICtrlStatusBar_SetText ($StatusBar1, "Installation", 0)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 90)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 90)
    GUICtrlSetData($Install_Fertig, "läuft")
    GUICtrlSetData($Feld_Fertig, "Installation Version 4.1.40")
    Sleep(2000)
    ; ******************************************************
    Case $i = 12 ; Alt Ja - Neu Nein / Deinstall Alt + Install Neu
    ; ************ Deinstallation ************************
    Sleep(2000)
    GUICtrlSetData($Feld_Fertig, "Alte Version wird gelöscht")
    GUICtrlSetData($ALTloeschen_Fertig, "läuft")
    _GUICtrlStatusBar_SetText ($StatusBar1, "Deinstallation", 0)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 10)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 20)
    Sleep(500)
    ProcessClose("EXCEL.EXE") ; Excel beenden falls geöffnet
    $PID = ProcessExists("EXCEL.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("POWERPNT.EXE") ; Powerpoint beenden falls geöffnet
    $PID = ProcessExists("POWERPNT.EXE")
    If $PID Then ProcessClose($PID)
    Sleep(500)
    ProcessClose("GEngine.EXE") ; PDFMAILER beenden falls geöffnet
    $PID = ProcessExists("GEngine.EXE")
    If $PID Then ProcessClose($PID)
    sleep(500)
    ProcessClose("PDFMailerApp.EXE") ; PDFMAILER beenden falls geöffnet
    $PID = ProcessExists("PDFMailerApp.EXE")
    If $PID Then ProcessClose($PID)
    sleep(2000)
    GUICtrlSetData($Feld_Fertig, "Alte Version wird gelöscht")
    GUICtrlSetData($ALTloeschen_Fertig, "läuft")
    _GUICtrlStatusBar_SetText ($StatusBar1, "Deinstallation", 0)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 10)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 40)
    Sleep(500)
    RunWait("C:\WINDOWS\system32\msiexec.exe" & " /x{528EC8F4-1C19-41BA-80A1-0B5EA21BA628}" & " /qb" & " /norestart", "", @SW_HIDE)
    ;~ Sleep(2000)
    ;~ If FileExists("c:\temp\install\PDFMailer") Then DirRemove("c:\temp\install\PDFMailer", 1)
    Sleep(2000)
    GUICtrlSetData($Feld_Fertig, "Alte Version gelöscht")
    GUICtrlSetData($ALTloeschen_Fertig, "fertig")
    GUICtrlSetData ($ProgressBar1, $Progress1 + 100)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 50)
    Sleep(2000)
    ; ************ Installation *****************
    _GUICtrlStatusBar_SetText ($StatusBar1, "Installation", 0)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 10)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 60)
    GUICtrlSetData($Install_Fertig, "läuft")
    GUICtrlSetData($Feld_Fertig, "Installation Version 4.1.40")
    Sleep(2000)
    Sleep(2000)
    _GUICtrlStatusBar_SetText ($StatusBar1, "Installation", 0)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 30)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 70)
    GUICtrlSetData($Install_Fertig, "läuft")
    GUICtrlSetData($Feld_Fertig, "Installation Version 4.1.40")
    Sleep(500)
    RunWait("msiexec /i ""C:\Temp\Install\PDFMailer-V4\pdfmailer4de.msi"" /qn", "", @SW_HIDE)
    If @error = 1 then MsgBox(262160, "Fehlermeldung", "Es ist ein Fehler aufgetreten, bitte melden Sie sich bei der IL", 10); bei Fehler MSGBOX und Exit
    Sleep(2000)
    _GUICtrlStatusBar_SetText ($StatusBar1, "Installation", 0)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 60)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 80)
    GUICtrlSetData($Install_Fertig, "läuft")
    GUICtrlSetData($Feld_Fertig, "Installation Version 4.1.40")
    Sleep(1000)
    RunWait(@COMSPEC & " /c Start C:\Temp\Install\PDFMailer-V4\einst.bat", "", @SW_HIDE)
    If @error = 1 then MsgBox(262160, "Fehlermeldung", "Es ist ein Fehler aufgetreten, bitte melden Sie sich bei der IL", 10); bei Fehler MSGBOX und Exit
    Sleep(2000)
    _GUICtrlStatusBar_SetText ($StatusBar1, "Installation", 0)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 90)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 90)
    GUICtrlSetData($Install_Fertig, "läuft")
    GUICtrlSetData($Feld_Fertig, "Installation Version 4.1.40")
    Sleep(2000)
    ; ******************************************************
    Case Else ; Nix machen
    ; ************ Kein Deinstallation *****************
    Sleep(2000)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 100)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 40)
    GUICtrlSetData($Feld_Fertig, "Deinstallation nicht nötig")
    GUICtrlSetData($ALTloeschen_Fertig, "fertig")
    Sleep(3000)
    ; ************ Kein Installation *******************
    GUICtrlSetData($Install_Fertig, "fertig")
    GUICtrlSetData($Feld_Fertig, "PDFMailer V4 schon installiert")
    GUICtrlSetData ($ProgressBar1, $Progress1 + 100)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 80)
    Sleep(3000)
    ; ******************************************************
    EndSelect

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

    ; **********************************************************
    EndFunc
    #region - Generelle Funktionen
    ;******** Beenden mit Nachfrage = ESC oder Abbrechen oder auf X im Fenster
    Func _Exit()
    $Box = MsgBox(262452, "Installation abbrechen", "Wenn Sie jetzt die Installation abbrechen, wird sie beim nächsten Neustart wieder gestartet." & @CRLF & @CRLF & "Wirklich beenden?")
    If $Box = 6 Then
    Exit
    EndIf
    EndFunc ;==>_Exit
    ;---------------------------------------------------------------

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

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

    [/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 ;==>TogglePause
    ;---------------------------------------------------------------

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

    ;******** Info *************************************************
    Func Info() ; Zeigt Hilfe Fenster an
    MsgBox(262208, "Info", $ProjectName & " Installation" & @CRLF & "Version: " & $Version & @CRLF & "Erstellt: " & $Erstellt & @CRLF & "Ersteller: " & $Erteller & @CRLF & "Abteilung: " & $Abteilung)
    EndFunc ;==>Info
    ;---------------------------------------------------------------

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

    ;******** Hilfe ************************************************
    Func Hilfe()
    MsgBox(262176, "Hilfe", "Haben Sie Fragen zu dieser Installation," & @CRLF & "dann rufen Sie bitte den Helpdesk " & @CRLF & "" & @CRLF & "unter Tel. 2000 an.")
    EndFunc ;==>Hilfe

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

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

    [/autoit]

    Danke

    3 Mal editiert, zuletzt von iwu74 (20. Mai 2008 um 14:03)

    • Offizieller Beitrag

    Du mußt das Programm auch anweisen zu beenden (Exit):

    [autoit]

    If @error = 1 then Exit MsgBox(262160, "Fehlermeldung", "Es ist ein Fehler aufgetreten, bitte melden Sie sich bei der IL", 10)

    [/autoit]

    Du kannst auch dann selber einen Fehler erzeugen und damit die Funktion verlassen und den Fehlerwert verarbeiten:

    [autoit]

    Func _bla()
    If $x = 0 Then Return SetError(1,0,1)
    If $y = 0 Then Return SetError(2,0,1)
    ;.....
    EndFunc

    [/autoit]

    Return der Funktion ist in beiden Fällen 1 für Fehler und Fehlerwert ist 1 bzw 2.
    Weiterverarbeitung z.B.:

    [autoit]

    If _bla() = 1 Then
    Switch @error
    Case 1
    ; Reaktion
    Case 2
    ; Reaktion
    EndSwitch
    EndIf

    [/autoit]
  • Habe jetzt noch ein wenig experimentiert und dabei festgestellt, dass der RunWait Aufruf gar keinen Error weiter gibt.
    Es kommt zwar die Meldung, dass die Datei nicht gefunden werden kann, aber trotzdem wird (vorher) eine 0 an @error weiter gegeben.
    Dadurch funktioniert die If Abfrage gar nicht, da sie ja nur anschlägt, wenn @error = 1 ist.

    Wat nu?

    Stehe auf dem Schlauch...

    Außerdem klappt der Exit vor dem MSG Box nicht.
    Das Scipt steigt vor der MSG Box aus.

  • Exit und MsgBox müssen in eine Zeile :)
    MSI bzw. CMD wird ja ausgeführt, daher wird ja die zu Startende Datei gefunden. MSI gibt jedoch einen ReturnCode zurück, der auf Fehler getestet werden kann:

    [autoit]


    $Return = RunWait("msiexec /i ""C:\Temp\Install\PDFMailer-V4\pdfmailer4de.msi"" /qn", "", @SW_HIDE)
    If @error = 1 Or ($Return > 1600 And $Return < 1650 ) then Exit MsgBox(262160, "Fehlermeldung", "Es ist ein Fehler aufgetreten, bitte melden Sie sich bei der IL" & @CRLF & "MSI-Fehler-Code: " & $Return, 10); bei Fehler MSGBOX und Exit

    [/autoit]


    Für RunWait(@Comspex START... kann man ShellExecute einsetzen, dann bekommt man den @error-Wert:

    [autoit]

    ShellExecuteWait("C:\Temp\Install\PDFMailer-V4\einst.bat", "", @SW_HIDE)
    If @error = 1 then Exit MsgBox(262160, "Fehlermeldung", "Es ist ein Fehler aufgetreten, bitte melden Sie sich bei der IL", 10); bei Fehler MSGBOX und Exit

    [/autoit]
  • Falls Interesse hier die aktuelle Version.

    Spoiler anzeigen


    [Autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=PDFMAILER-Install.exe
    #AutoIt3Wrapper_Compression=4
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ;
    ; AutoIt Version: 3.2.10
    ; Platform: WinXP
    ; Author: iwu74
    ;
    ; Script Function:
    ; Open Project Installation
    ;

    AutoItSetOption("TrayIconHide", 1) ; versteckt das Icon in der Trayleiste, somit keine Funktionionen über Trayicon (beenden etc.)

    #region - Global
    Global $Paused
    $ProjectName = "PDFMAILER V4" ; Name des Programms. Wird an alle Fenster weiter gegeben.
    $Version = "0.6"
    $Erstellt = "Mai 2008"
    $Erteller = "wu2"
    $Abteilung = "IL"
    #endregion - Global


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

    #region - Dateien ins Skript einbinden
    ;~ FileInstall("H:\Auto-IT\Scripte\UpdatePack\Logo_klein.gif", "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> ; Wichtig zum erzeugen von einer GUI (OHNE keine GUI)
    #Include <GuiStatusBar.au3> ; Wichtig zum erzeugen von Statusbar (OHNE kein STATUSBAR)
    Opt("GUIOnEventMode", 1) ; Wechsle in den OnEvent Modus
    Opt("RunErrorsFatal", 0) ;1=fatal, 0=silent set @error

    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit") ; Legt fest, was passiert, wenn man das Fenster schließt

    #region - Seite1
    ; Erzeugen der Ersten Seite
    $Seite01 = GUICreate($ProjectName, 641, 481, -1, -1, $WS_CAPTION, $WS_EX_TOPMOST)
    $Ueberschrift = GUICtrlCreateLabel($ProjectName & " Installation", 30, 30, 400, 36)
    GUICtrlSetFont(-1, 20, 800, 0, "Arial")
    $Logo = GUICtrlCreatePic("C:\Temp\Install\PDFMailer-V4\Logo_klein.gif", 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("Es wird jetzt der PDFMailer V4 installiert.", 30, 110, 570, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $S1_Zeile03 = GUICtrlCreateLabel("Die Installtion wird ca. 5 Minuten dauern.", 30, 170, 570, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $S1_Zeile04 = GUICtrlCreateLabel("Eventuell vorab installierte Versionen werden gelöscht.", 30, 200, 570, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $S1_Zeile06 = GUICtrlCreateLabel("Am Ende wird ein maxx PDFMailer Drucker in der Druckerliste erscheinen.", 30, 260, 570, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $S1_Zeile08 = GUICtrlCreateLabel("Sie können mittels des Abbrechen-Knopfes die Installation 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
    ; Erzeugen der zweiten Seite
    $Seite02 = GUICreate($ProjectName , 641, 481, -1, -1, $WS_CAPTION, $WS_EX_APPWINDOW)
    $Ueberschrift = GUICtrlCreateLabel($ProjectName & " Installation", 30, 30, 396, 36)
    GUICtrlSetFont(-1, 20, 800, 0, "Arial")
    $Logo = GUICtrlCreatePic("C:\Temp\Install\PDFMailer-V4\Logo_klein.gif", 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)
    $Versionkontrolle = GUICtrlCreateLabel("Versionskontrolle", 180, 110, 149, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $ALTloeschen = GUICtrlCreateLabel("Alte Version löschen", 180, 140, 150 , 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $Install = GUICtrlCreateLabel("Programminstallation", 180, 170, 170, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $Feld_Fertig = GUICtrlCreateLabel(" ", 185, 400, 270, 22)
    GUICtrlSetFont(-1, 12, 800, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $Versionkontrolle_Fertig = GUICtrlCreateLabel(" ", 410, 110, 37, 20) ; siehe unten in der funktion
    GUICtrlSetFont(-1, 10, 400, 2, "Arial")
    GUICtrlSetColor(-1, 0x008080)
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $ALTloeschen_Fertig = GUICtrlCreateLabel(" ", 410, 140, 37, 20)
    GUICtrlSetFont(-1, 10, 400, 2, "Arial")
    GUICtrlSetColor(-1, 0x008080)
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $Install_Fertig = GUICtrlCreateLabel(" ", 410, 170, 37, 20)
    GUICtrlSetFont(-1, 10, 400, 2, "Arial")
    GUICtrlSetColor(-1, 0x008080)
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    #endregion - Seite 2

    #region Statusbar Seite 2
    ; Erzeugen eines Statusbar mit 5 Feldern, davon 2 Progressbars
    Local $StatusBar1, $ProgressBar1, $ProgressBar2, $Progress1 = 0, $Progress2 = 0
    Local $a_Parts[5] = [169, 309, 335 , 475, -1] ; ProgressFelder und StartBreite = 140
    $StatusBar1 = _GUICtrlStatusBar_Create ($Seite02); Erzeugt eine Statusbar bei der $Seite02
    _GUICtrlStatusBar_SetMinHeight ($StatusBar1, 20); Setzt die Höhe der Statusbar
    _GUICtrlStatusBar_SetParts ($StatusBar1, $a_Parts) ; Setzt fest, aus wie vielen Teilen die Statusbar bestehen soll
    $progressBar1 = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_SMOOTH) ; Erzeugt einen Prozessbalken
    $progressBar2 = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_SMOOTH) ; Erzeugt einen Prozessbalken
    $hProgress1 = GUICtrlGetHandle($progressBar1) ; Erlaubt das "Händling" des Prozessbalkens
    _GUICtrlStatusBar_EmbedControl ($StatusBar1, 1, $hProgress1) ; legt fest, in welcher Spalte der erste Prozessbalken laufen soll
    $hProgress2 = GUICtrlGetHandle($progressBar2) ; Erlaubt das "Händling" des Prozessbalkens
    _GUICtrlStatusBar_EmbedControl ($StatusBar1, 3, $hProgress2) ; legt fest, in welcher Spalte der zweite Prozessbalken laufen soll
    GUICtrlSetColor($ProgressBar1,32250); setzt die Farbe für den ersten "Laufbalken"
    #endregion Statusbar Seite 2


    #region -Seite 3
    ; Erzeugen der dritten Seite
    $Seite03 = GUICreate($ProjectName , 641, 481, -1, -1, $WS_CAPTION, $WS_EX_TOPMOST) ;, $WS_EX_APPWINDOW
    $Ueberschrift = GUICtrlCreateLabel($ProjectName & " Installation", 30, 30, 396, 36)
    GUICtrlSetFont(-1, 20, 800, 0, "Arial")
    $Logo = GUICtrlCreatePic("C:\Temp\Install\PDFMailer-V4\Logo_klein.gif", 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 Software wurde erfolgreich installiert.", 30, 110, 570, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $S3_Zeile02 = GUICtrlCreateLabel("Viel Spaß beim benutzen des Programms.", 30, 170, 570, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $S3_Zeile03 = GUICtrlCreateLabel("Info:", 30, 230, 570, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    $S3_Zeile04 = GUICtrlCreateLabel("Sie können jetzt ISO Zertifizierte PDF/A Dateien erzeugen.", 30, 260, 570, 22)
    GUICtrlSetFont(-1, 12, 400, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    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)
    $BeendenButton = GUICtrlCreateButton("Beenden", 270, 410, 80, 50, 0)
    GUICtrlSetFont(-1, 12, 800, 0, "Arial")
    GUICtrlSetBkColor(-1, 0xC0C0C0)
    GUICtrlSetOnEvent($BeendenButton, "_AdminExit")
    #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()
    Sleep(1000)
    GUISetState( @SW_SHOW, $Seite02 ) ;öffnet Seite02
    GUISetState( @SW_HIDE, $Seite01 ) ;versteckt Seite01
    Sleep(2000)
    _GUICtrlStatusBar_SetText ($StatusBar1, "Installations Status Gesamt", 4)
    $Progress1 = 0 ; setzt die erste Statusbar auf 0
    $Progress2 = 0 ; setzt die zweite Statusbar auf 0
    ;~ ***********************
    Func_Install()
    ;~ ***********************
    _GUICtrlStatusBar_SetText ($StatusBar1, "Installations beendet", 4)
    _GUICtrlStatusBar_SetText ($StatusBar1, "Installation beendet", 0)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 100)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 100)
    Sleep(2000)
    GUISetState( @SW_SHOW, $Seite03 ) ;öffnet Seite03
    GUISetState( @SW_HIDE, $Seite02 ) ;versteckt Seite02
    EndFunc ;==>Seite01_OK
    #endregion - Funktion Seite 1

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

    #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, 60 - $i & " Sekunden bis Neustart")
    Next
    ProgressSet(100, "Laufzeit", "Neustart wird ausgelöst")
    Sleep(1000)
    ProgressOff()
    Shutdown(2)
    Exit
    EndFunc ;==>Neustart

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

    Func Neustart2()
    Sleep (2000)
    Shutdown (2)
    Exit
    EndFunc ;==>Neustart2
    #endregion - Funktion Seite 3

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

    #region - Installationen
    ;~ ***************************************************
    Func Func_Install()
    ;===============================================================
    GUICtrlSetData($Feld_Fertig, "Versionskontrolle")
    _GUICtrlStatusBar_SetText ($StatusBar1, "Versionskontrolle", 0)
    GUICtrlSetData($Versionkontrolle_Fertig, "läuft")
    GUICtrlSetData ($ProgressBar1, $Progress1 + 10)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 10)
    $i = 0
    ; Abfragen V3
    ; ----------------------------------------------------------
    RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{528EC8F4-1C19-41BA-80A1-0B5EA21BA628}","DisplayName")
    If @error = 1 then ; Wenn keine Alte Version gefunden wurde, dann 2
    $i = $i + 2
    Else ; Wenn Alte Version gefunden, dann Wert auf 4
    $i = $i + 4
    GUICtrlSetData ($ProgressBar1, $Progress1 + 50)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 20)
    EndIf
    Sleep(1000)
    ; Abfragen V4
    ; ----------------------------------------------------------
    RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{01310914-E3B8-40E8-BCF7-9C42E0639A43}","DisplayName")
    If @error = 1 then ; Wenn keine Neue Version gefunden wurde, dann Wert 8
    $i = $i + 8
    Else ; Wenn Neue Version gefunden wurde, dann Wert 16
    $i = $i + 16
    EndIf
    Sleep(500)
    _GUICtrlStatusBar_SetText ($StatusBar1, "Versionskontrolle beendet", 0)
    GUICtrlSetData($Versionkontrolle_Fertig, "fertig")
    GUICtrlSetData ($ProgressBar1, $Progress1 + 100)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 30)
    Sleep(2000)
    ; ******************** Verarbeitung ************************
    Select
    Case $i = 10 ; Alt Nein - Neu Nein / Install
    ; ************ Kein Deinstallation *****************
    Sleep(2000)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 100)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 40)
    GUICtrlSetData($Feld_Fertig, "Deinstallation nicht nötig")
    GUICtrlSetData($ALTloeschen_Fertig, "fertig")
    Sleep(4000)
    ; ************ Installation *****************
    _GUICtrlStatusBar_SetText ($StatusBar1, "Installation", 0)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 10)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 60)
    GUICtrlSetData($Install_Fertig, "läuft")
    GUICtrlSetData($Feld_Fertig, "Installation Version 4.1.40")
    Sleep(2000)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 30)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 70)
    Sleep(500)
    $Return = RunWait("msiexec /i ""C:\Temp\Install\PDFMailer-V4\pdfmailer4de.msi"" /qn", "", @SW_HIDE)
    If @error = 1 Or ($Return > 1600 And $Return < 1650 ) then Exit MsgBox(262160, "Fehlermeldung", "Es ist ein Fehler aufgetreten, bitte melden Sie sich bei der IL" & @CRLF & "MSI-Fehler-Code: " & $Return, 10); bei Fehler MSGBOX und Exit
    Sleep(2000)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 60)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 80)
    Sleep(1000)
    ShellExecuteWait("C:\Temp\Install\PDFMailer-V4\einst.bat", "", @SW_HIDE)
    If @error = 1 then Exit MsgBox(262160, "Fehlermeldung", "Es ist ein Fehler aufgetreten, bitte melden Sie sich bei der IL", 10); bei Fehler MSGBOX und Exit
    Sleep(2000)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 90)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 90)
    Sleep(2000)
    ; ******************************************************
    Case $i = 12 ; Alt Ja - Neu Nein / Deinstall Alt + Install Neu
    ; ************ Deinstallation ************************
    Sleep(2000)
    GUICtrlSetData($Feld_Fertig, "Alte Version wird gelöscht")
    GUICtrlSetData($ALTloeschen_Fertig, "läuft")
    _GUICtrlStatusBar_SetText ($StatusBar1, "Deinstallation", 0)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 10)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 20)
    Sleep(500)
    ProcessClose("EXCEL.EXE") ; Excel beenden falls geöffnet
    $PID = ProcessExists("EXCEL.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("POWERPNT.EXE") ; Powerpoint beenden falls geöffnet
    $PID = ProcessExists("POWERPNT.EXE")
    If $PID Then ProcessClose($PID)
    Sleep(500)
    ProcessClose("GEngine.EXE") ; PDFMAILER beenden falls geöffnet
    $PID = ProcessExists("GEngine.EXE")
    If $PID Then ProcessClose($PID)
    sleep(500)
    ProcessClose("PDFMailerApp.EXE") ; PDFMAILER beenden falls geöffnet
    $PID = ProcessExists("PDFMailerApp.EXE")
    If $PID Then ProcessClose($PID)
    sleep(2000)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 10)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 40)
    Sleep(500)
    RunWait("C:\WINDOWS\system32\msiexec.exe" & " /x{528EC8F4-1C19-41BA-80A1-0B5EA21BA628}" & " /qb" & " /norestart", "", @SW_HIDE)
    Sleep(5000)
    If FileExists("c:\temp\install\PDFMailer") Then DirRemove("c:\temp\install\PDFMailer", 1)
    Sleep(2000)
    GUICtrlSetData($Feld_Fertig, "Alte Version gelöscht")
    GUICtrlSetData($ALTloeschen_Fertig, "fertig")
    GUICtrlSetData ($ProgressBar1, $Progress1 + 100)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 50)
    Sleep(2000)
    ; ************ Installation *****************
    _GUICtrlStatusBar_SetText ($StatusBar1, "Installation", 0)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 10)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 60)
    GUICtrlSetData($Install_Fertig, "läuft")
    GUICtrlSetData($Feld_Fertig, "Installation Version 4.1.40")
    Sleep(2000)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 30)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 70)
    Sleep(500)
    $Return = RunWait("msiexec /i ""C:\Temp\Install\PDFMailer-V4\pdfmailer4de.msi"" /qn", "", @SW_HIDE)
    If @error = 1 Or ($Return > 1600 And $Return < 1650 ) then Exit MsgBox(262160, "Fehlermeldung", "Es ist ein Fehler aufgetreten, bitte melden Sie sich bei der IL" & @CRLF & "MSI-Fehler-Code: " & $Return, 10); bei Fehler MSGBOX und Exit
    Sleep(2000)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 60)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 80)
    Sleep(1000)
    ShellExecuteWait("C:\Temp\Install\PDFMailer-V4\einst.bat", "", @SW_HIDE)
    If @error = 1 then Exit MsgBox(262160, "Fehlermeldung", "Es ist ein Fehler aufgetreten, bitte melden Sie sich bei der IL", 10); bei Fehler MSGBOX und Exit
    Sleep(2000)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 90)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 90)
    Sleep(2000)
    ; ******************************************************
    Case Else ; Nix machen
    ; ************ Kein Deinstallation *****************
    Sleep(2000)
    GUICtrlSetData ($ProgressBar1, $Progress1 + 100)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 40)
    GUICtrlSetData($Feld_Fertig, "Deinstallation nicht nötig")
    GUICtrlSetData($ALTloeschen_Fertig, "fertig")
    Sleep(3000)
    ; ************ Kein Installation *******************
    GUICtrlSetData($Install_Fertig, "fertig")
    GUICtrlSetData($Feld_Fertig, "PDFMailer V4 schon installiert")
    GUICtrlSetData ($ProgressBar1, $Progress1 + 100)
    GUICtrlSetData ($ProgressBar2, $Progress2 + 80)
    Sleep(3000)
    ; ******************************************************
    EndSelect

    ; **********************************************************
    EndFunc
    #region - Generelle Funktionen
    ;******** Beenden mit Nachfrage = ESC oder Abbrechen oder auf X im Fenster
    Func _Exit()
    $Box = MsgBox(262452, "Installation abbrechen", "Wenn Sie jetzt die Installation abbrechen, wird sie beim nächsten Neustart wieder gestartet." & @CRLF & @CRLF & "Wirklich beenden?")
    If $Box = 6 Then
    Exit
    EndIf
    EndFunc ;==>_Exit
    ;---------------------------------------------------------------

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

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

    ;******** Info *************************************************
    Func Info() ; Zeigt Hilfe Fenster an
    MsgBox(262208, "Info", $ProjectName & " Installation" & @CRLF & "Version: " & $Version & @CRLF & "Erstellt: " & $Erstellt & @CRLF & "Ersteller: " & $Erteller & @CRLF & "Abteilung: " & $Abteilung)
    EndFunc ;==>Info
    ;---------------------------------------------------------------

    ;******** Hilfe ************************************************
    Func Hilfe()
    MsgBox(262176, "Hilfe", "Haben Sie Fragen zu dieser Installation," & @CRLF & "dann rufen Sie bitte den Helpdesk " & @CRLF & "" & @CRLF & "unter Tel. 2000 an.")
    EndFunc ;==>Hilfe

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

    [Autoit]