ToDo GUI nach Unattended Installation

  • Hi Leute,

    ich hab ein kleines Problemchen. Ich habe eine Unattended DVD erstellt, welche auch super läuft. Leider gibt es einige Programme und Einstellung, welche nicht mit Reg Tweaks gelöst werden könne. Deshalb müssen verschiedene Schritte nach der Installation durchgeführt werden. Ich habe hierfür eine GUI mit den Wesentlichen Eingaben gebastelt, welche dann (noch mit einem Statusbalken, aber soweit bin ich nocht nicht :), vielleicht kann den ja jemand einbauen *frech frag*) diese Schritte durchführt. Allerdings habe ich das Problem, dass sich die Porgramme immer überschneiden. Ich bräuchte eine Möglichkeit, mit der immer gewartet wird, bis ein Schritt wirklich komplett abgeschlossen wurde. Hierfür habe ich eine INI Datei verwendet. Diese soll unter dem Wert "STATE" immer denn aktuellen Stand anzeigen (auch gut falls ein Rechner mal neustartet).
    Hier mal der Code bisher.

    Spoiler anzeigen
    [autoit]


    ; GUI zum einrichten des PCs nach der Standardinstallation

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

    $version = "1.0"

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

    ;Einbinden der Dateien
    #include <GUIConstants.au3>
    #include <file.au3>

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

    ;GUI Status auslesen
    $guis = IniRead ("setup.ini", "VARIABLEN", "GUI", "0")

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

    if $guis == 0 Then

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

    ;Konfig GUI
    GUICreate("Konfigurationsmenü",600,420)
    GUICtrlCreateGroup("McAfee Konfiguration", 10, 30, 260, 325)
    GUICtrlCreateLabel("Taskname für AutoUpdate",20,55)
    $nai_tn = GUICtrlCreateInput ("",20,70,100,20)
    GUICtrlCreateLabel("UNC-Updatepfad (\\SERVERNAME\FREIGABE\)",20,105)
    $nai_unc = GUICtrlCreateInput ("",20,120,200,20)
    GUICtrlCreateLabel("Anmeldedomäne oder Arbeitsgruppe",20,155)
    $nai_dom = GUICtrlCreateInput ("",20,170,150,20)
    GUICtrlCreateLabel("Benutzer",20,205)
    $nai_usr = GUICtrlCreateInput ("",20,220,150,20)
    GUICtrlCreateLabel("Passwort",20,255)
    $nai_psw = GUICtrlCreateInput ("",20,270,150,20)
    GUICtrlCreateLabel("Passwort für Oberfläche",20,305)
    $nai_opsw = GUICtrlCreateInput ("",20,320,150,20)

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

    GUICtrlCreateGroup("Globale Angaben", 300, 30, 180, 130)
    GUICtrlCreateLabel("Lokales Admin-Passwort",310,55)
    $glb_apsw = GUICtrlCreateInput ("",310,70,120,20)
    GUICtrlCreateLabel("Schulproxy (10.141.XXX.254)",310,105)
    $glb_pxy = GUICtrlCreateInput ("",310,120,120,20)

    GUICtrlCreateGroup("DKS Angaben", 300, 170, 180, 80)
    GUICtrlCreateLabel("DKS Passwort",310,195)
    $dks_psw = GUICtrlCreateInput ("",310,210,120,20)

    ;Explorermenu
    $filemenu = GUICtrlCreateMenu ("Datei")
    $infomenu = GUICtrlCreateMenu ("?")
    $infoitem = GUICtrlCreateMenuitem ("Info",$infomenu)
    $exititem = GUICtrlCreateMenuitem ("Exit",$filemenu)

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

    GUICtrlSetState(-1,$GUI_CHECKED)
    $okbutton = GUICtrlCreateButton ("Einrichten",400,330,70,20)
    GUICtrlSetState(-1,$GUI_FOCUS)
    $cancelbutton = GUICtrlCreateButton ("Abbrechen",490,330,70,20)


    GUISetState ()
    While 1
    $msg = GUIGetMsg()

    If $msg = $GUI_EVENT_CLOSE Or $msg = $cancelbutton Or $msg = $exititem Then ExitLoop
    If $msg = $infoitem Then Msgbox(0,"Info","Version: " & $version & @CRLF & "(C) Copyright by Stadtschulamt" & @CRLF & "40.43.3 Ma")
    If $msg = $okbutton Then
    ;==================Auslesen der Variablen=====
    $nai_tnr = GUICtrlRead($nai_tn)
    $nai_uncr = GUICtrlRead($nai_unc)
    $nai_domr = GUICtrlRead($nai_dom)
    $nai_usrr = GUICtrlRead($nai_usr)
    $nai_pswr = GUICtrlRead($nai_psw)
    $nai_opswr = GUICtrlRead($nai_opsw)
    $glb_apswr = GUICtrlRead($glb_apsw)
    $glb_pxyr = GUICtrlRead($glb_pxy)
    $dks_pswr = GUICtrlRead($dks_psw)

    ;==================Variablen in INI speichern==
    IniWrite("setup.ini", "VARIABLEN", "GUI", "1")
    IniWrite("setup.ini", "VARIABLEN", "TN", $nai_tnr)
    IniWrite("setup.ini", "VARIABLEN", "UNC", $nai_uncr)
    IniWrite("setup.ini", "VARIABLEN", "DOM", $nai_domr)
    IniWrite("setup.ini", "VARIABLEN", "USR", $nai_usrr)
    IniWrite("setup.ini", "VARIABLEN", "PSW", $nai_pswr)
    IniWrite("setup.ini", "VARIABLEN", "OPSW", $nai_opswr)
    IniWrite("setup.ini", "VARIABLEN", "APSW", $glb_apswr)
    IniWrite("setup.ini", "VARIABLEN", "PXY", $glb_pxyr)
    IniWrite("setup.ini", "VARIABLEN", "DPSW", $dks_pswr)

    ;===Tweaks -> Umgebungsvariablen etc.===
    run("REGEDIT /S Umgebungsvariablen.reg")
    run("REGEDIT /S Pagefile.reg")

    ;===NAI===
    IniWrite("setup.ini", "SETUP", "STATE", "NAI")
    run("C:\Programme\Network Associates\VirusScan\mcconsol.exe")
    WinWaitActive("VirusScan-Konsole")
    Sleep(5000)
    Send("{Alt}")
    Sleep(1000)
    send("{E}")
    Sleep(1000)
    send("{U}")
    WinWait("AutoUpdate-Repository-Liste bearbeiten")
    send("{Tab 8}")
    Sleep(1000)
    send("{right}")
    ControlClick("AutoUpdate-Repository-Liste bearbeiten", "Proxy-Ein&stellungen manuell konfigurieren", 59)
    send("{Tab}")
    send($glb_pxyr)
    send("{Tab}")
    send("80")
    Sleep(1000)
    send("{Tab 9}")
    Sleep(1000)
    Send("{left}")
    Sleep(2000)
    ControlClick("AutoUpdate-Repository-Liste bearbeiten", "&Hinzufügen...", 112)
    WinWait("Repository-Einstellungen")
    send($nai_tnr)
    ControlClick("Repository-Einstellungen", "U&NC-Pfad", 1202)
    Send("{Tab}")
    send($nai_uncr)
    Send("{Tab 2}")
    send($nai_domr)
    Send("{Tab}")
    send($nai_usrr)
    Send("{Tab}")
    send($nai_pswr)
    Send("{Tab}")
    send($nai_pswr)
    ControlClick("Repository-Einstellungen", "OK", 1)
    WinWait("AutoUpdate-Repository-Liste bearbeiten")
    ControlClick("AutoUpdate-Repository-Liste bearbeiten", "Nach &oben verschieben", 109)
    ControlClick("AutoUpdate-Repository-Liste bearbeiten", "Nach &oben verschieben", 109)
    ControlClick("AutoUpdate-Repository-Liste bearbeiten", "OK", 1)
    WinWait("VirusScan-Konsole")
    ;=====AutoUpdate Konfig====
    send("Auto")
    send("{Enter}")
    WinWait("Eigenschaften von VirusScan AutoUpdate - AutoUpdate")
    ControlClick("Eigenschaften von VirusScan AutoUpdate - AutoUpdate", "P&lan...", 7)
    WinWait("Planeinstellungen")
    Send("{right 3}")
    Sleep(1000)
    Send("{Tab}")
    Sleep(1000)
    send("{B}")
    Sleep(1000)
    ControlClick("Planeinstellungen", "OK", 1)
    WinWait("Eigenschaften von VirusScan AutoUpdate - AutoUpdate")
    ControlClick("Eigenschaften von VirusScan AutoUpdate - AutoUpdate", "OK", 1)
    WinWait("VirusScan-Konsole")
    Send("{Alt}")
    Sleep(1000)
    Send("{T}")
    Sleep(1000)
    Send("{B}")
    WinWaitActive("VirusScan-Konsole")
    ;=====Oberflächen Passwort====
    Sleep(2000)
    Send("{Alt}")
    Sleep(1000)
    send("{E}")
    Sleep(1000)
    Send("{B}")
    Sleep(1000)
    Send("{TAB 5}")
    Sleep(1000)
    Send("{right}")
    ControlClick("Benutzeroberflächenoptionen", "Kennw&ortschutz für die ausgewählten Elemente", "Button3")
    ControlClick("Benutzeroberflächenoptionen", "", "Edit1")
    send($nai_opswr)
    ControlClick("Benutzeroberflächenoptionen", "", "Edit2")
    send($nai_opswr)
    Sleep(1000)
    Send("{TAB}")
    Sleep(1000)
    Send("{Space}")
    Sleep(1000)
    Send("{Z}")
    Sleep(1000)
    Send("{Space}")
    ControlClick("Benutzeroberflächenoptionen", "Ü&bernehmen", "Button6")
    ControlClick("Benutzeroberflächenoptionen", "OK", "Button4")
    send("{Alt}")
    send("{T}")
    Send("{B}")
    run("REGEDIT /S nai.reg")

    ;============IE Proxy========
    IniWrite("setup.ini", "SETUP", "STATE", "IEP")
    run("RunDll32.exe shell32.dll,Control_RunDLL inetcpl.cpl,,4")
    WinWaitActive("Eigenschaften von Internet")
    controlclick("Eigenschaften von Internet", "Ei&nstellungen...", "Button13")
    controlclick("Einstellungen für lokales Netzwerk (LAN)", "A&utomatische Suche der Einstellungen", "Button2")
    controlclick("Einstellungen für lokales Netzwerk (LAN)", "Pro&xyserver für LAN verwenden (diese Einstellungen gelten nicht für DFÜ- oder VPN-Verbindungen)", "Button6")
    ControlClick("Einstellungen für lokales Netzwerk (LAN)", "", "Edit2")
    send($glb_pxyr)
    ControlClick("Einstellungen für lokales Netzwerk (LAN)", "", "Edit3")
    send("80")
    controlclick("Einstellungen für lokales Netzwerk (LAN)", "&Proxyserver für lokale Adressen umgehen", "Button8")
    controlclick("Einstellungen für lokales Netzwerk (LAN)", "Er&weitert...", "Button7")
    ControlClick("Proxyeinstellungen", "", "Edit9")
    send($glb_pxyr)
    ControlClick("Proxyeinstellungen", "", "Edit10")
    send("80")
    controlclick("Proxyeinstellungen", "Für &alle Protokolle denselben Server verwenden", "Button2")
    ControlClick("Proxyeinstellungen", "", "Edit11")
    send("10.141.*; *.stadt-frankfurt.de")
    ControlClick("Proxyeinstellungen", "OK", "Button4")
    WinWaitActive("Einstellungen für lokales Netzwerk (LAN)")
    controlclick("Einstellungen für lokales Netzwerk (LAN)", "OK", "Button12")
    winwait("Eigenschaften von Internet")
    controlclick("Eigenschaften von Internet", "OK", "Button14")

    ;===========DRIVE Konfiguration=====
    IniWrite("setup.ini", "SETUP", "STATE", "DKS")
    run("C:\Programme\DKS\Drive\DksStatus.exe /config")
    WinWaitActive("DKS Drive Konfiguration")
    send("{ALT}")
    Sleep(1000)
    send("{A}")
    Sleep(1000)
    send("{Enter}")
    ControlClick("Passworte Ändern", "Ändern...", "TButton2")
    WinWaitActive("Adminpasswort ändern")
    ControlClick("Adminpasswort ändern", "", "TEdit1")
    send($dks_pswr)
    ControlClick("Adminpasswort ändern", "", "TEdit2")
    send($dks_pswr)
    ControlClick("Adminpasswort ändern", "&Ok", "TButton2")
    ControlClick("Passworte Ändern", "Ändern...", "TButton1")
    WinWaitActive("Benutzerpasswort ändern")
    ControlClick("Benutzerpasswort ändern", "", "TEdit1")
    send($dks_pswr)
    ControlClick("Benutzerpasswort ändern", "", "TEdit2")
    send($dks_pswr)
    ControlClick("Benutzerpasswort ändern", "&Ok", "TButton2")
    ControlClick("Benutzerpasswort ändern", "Ändern...", "TButton1")
    ControlClick("Passworte Ändern", "&Ok", "TButton3")
    send("{ALT}")
    Sleep(1000)
    send("{K}")
    Sleep(1000)
    send("{B}")

    ;====Admin Passwort====
    IniWrite("setup.ini", "SETUP", "STATE", "ADMINPSW")
    run("cmd.exe")
    WinWaitActive("C:\WINDOWS\system32\cmd.exe")
    send("net user Administrator " & $glb_apswr)
    send("{Enter}")
    send("exit")
    send("{Enter}")

    ;====Luna Oberfläche====
    IniWrite("setup.ini", "SETUP", "STATE", "LUNA")
    run("cmd")
    WinWaitActive("C:\WINDOWS\system32\cmd.exe")
    send("%systemroot%\Resources\Themes\Luna.theme")
    send("{ENTER}")
    WinWaitActive("Eigenschaften von Anzeige")
    ControlClick("Eigenschaften von Anzeige", "Ü&bernehmen", "Button5")
    WinWaitActive("Eigenschaften von Anzeige")
    ControlClick("Eigenschaften von Anzeige", "OK", "Button3")
    WinWaitActive("C:\WINDOWS\system32\cmd.exe")
    send("exit")
    send("{ENTER}")


    ;====System Optik===
    IniWrite("setup.ini", "SETUP","STATE", "SYSOPT")
    run("RunDll32.exe shell32.dll,Options_RunDLL 1")
    WinWaitActive("Eigenschaften von Taskleiste und Startmenü")
    ControlClick("Eigenschaften von Taskleiste und Startmenü", "Ä&hnliche Elemente gruppieren", "Button4")
    ControlClick("Eigenschaften von Taskleiste und Startmenü", "&Inaktive Symbole ausblenden", "Button7")
    ControlClick("Eigenschaften von Taskleiste und Startmenü", "&Schnellstartleiste anzeigen", "Button5")
    send("{TAB 6}")
    send("{RIGHT}")
    ControlClick("Eigenschaften von Taskleiste und Startmenü", "&Klassisches Startmenü", "Button2")
    ControlClick("Eigenschaften von Taskleiste und Startmenü", "A&npassen...", "Button4")
    WinWaitActive("Klassisches Startmenü anpassen")
    send("{TAB 5}")
    send("{Down 7}")
    send("{SPACE}")
    send("{Down 2}")
    send("{SPACE}")
    ControlClick("Klassisches Startmenü anpassen", "OK", "Button7")
    WinWaitActive("Eigenschaften von Taskleiste und Startmenü")
    ControlClick("Eigenschaften von Taskleiste und Startmenü", "Ü&bernehmen", "Button7")
    ControlClick("Eigenschaften von Taskleiste und Startmenü", "OK", "Button5")

    ;====ITWE Benutzer hinzufügen===
    IniWrite("setup.ini", "SETUP","STATE", "ITWEUSR")
    run("cmd")
    WinWaitActive("C:\WINDOWS\system32\cmd.exe")
    send("net user itwe suppitwe /add")
    send("{ENTER}")
    send("net localgroup Administratoren itwe /add")
    send("{ENTER}")
    send("net accounts /maxpwage:unlimited")
    send("{ENTER}")
    send("net localgroup Benutzer itwe /delete")
    send("{ENTER}")
    send("exit")
    send("{ENTER}")

    ;====MP10 einrichten===
    IniWrite("setup.ini", "SETUP","STATE", "MP10")
    run("C:\Programme\Windows Media Player\wmplayer.exe")
    WinWaitActive("Windows Media Player 10")
    controlclick("Windows Media Player 10", "&Weiter >", "Button4")
    WinWaitActive("Windows Media Player 10")
    controlclick("Windows Media Player 10", "Medieninfo&rmationen aus dem Internet anzeigen", "Button2")
    WinWaitActive("Windows Media Player 10")
    controlclick("Windows Media Player 10", "Eigene Musi&kdateien durch Abrufen ergänzender Medieninformationen aus dem Internet aktualisieren", "Button3")
    WinWaitActive("Windows Media Player 10")
    controlclick("Windows Media Player 10", "&Datei- oder URL-Verlauf im Player speichern", "Button8")
    WinWaitActive("Windows Media Player 10")
    controlclick("Windows Media Player 10", "&Weiter >", "Button12")
    WinWaitActive("Windows Media Player 10")
    controlclick("Windows Media Player 10", "&Fertig stellen", "Button5")
    WinWaitActive("Windows Media Player")
    controlclick("Windows Media Player", "&Nein", "Button2")

    ;====Printkey Überprüfung====
    IniWrite("setup.ini", "SETUP","STATE", "PK2K")
    if ("C:\Programme\Printkey2000") Then
    FileCopy("C:\apps\printkey\PRINTKEY2000.EXE", "C:\Programme\Printkey2000\PRINTKEY2000.EXE")
    FileCopy("C:\apps\printkey\README.RTF", "C:\Programme\Printkey2000\README.RTF")
    FileCreateShortcut("C:\apps\printkey\PRINTKEY2000.EXE", @DesktopDir & "\EDU Pad.lnk", "C:\apps\printkey\PRINTKEY2000.EXE")
    EndIf

    ;====Irfan View====
    IniWrite("setup.ini", "SETUP","STATE", "IRFAN")
    if ("C:\Programme\IrfanView") Then
    FileCopy("C:\apps\IrfanView\i_view32.ini", "C:\Programme\IrfanView")
    EndIf

    ;====Dienste deaktivieren===
    IniWrite("setup.ini", "SETUP","STATE", "DIENSTE")
    run("C:\apps\firstrun\d_deak.cmd")

    ;====PC Beschreibungsdatei==
    IniWrite("setup.ini", "SETUP","STATE", "PCBESCH")
    FileCopy("PC_Besch.cmd", "C:\Dokumente und Einstellungen\Administrator\Desktop\PC_Besch.cmd")

    ;====AdminConsolen Patch===
    IniWrite("setup.ini", "SETUP","STATE", "ACPATCH")
    run("cmd")
    WinWaitActive("C:\WINDOWS\system32\cmd.exe")
    send("killprocess.exe /K DksRemote.exe")
    send("{ENTER}")
    Sleep(2000)
    send("copy %systemdrive%\apps\firstrun\dks\dksnetw.dll %systemdrive%\Porgramme\DKS\AdminConsole\dksnetw.dll /Y")
    send("{ENTER}")
    send("exit")
    send("{ENTER}")

    ;====IE Tempfiles===
    IniWrite("setup.ini", "SETUP","STATE", "IETEMP")
    DirCreate("C:\Temp")
    Sleep(1000)
    run("RunDll32.exe shell32.dll,Control_RunDLL inetcpl.cpl")
    winwait("Eigenschaften von Internet")
    controlclick("Eigenschaften von Internet", "Ei&nstellungen...", 1490)
    winwait("Einstellungen")
    controlclick("Einstellungen", "Ordner verschieben...", 605)
    winwait("Ordner suchen")
    send("{down 2}")
    sleep(1000)
    send("{right}")
    sleep(1000)
    send("{Temp}")
    sleep(1000)
    winwait("Ordner suchen")
    controlclick("Ordner suchen", "OK", 1)
    winwait("Einstellungen")
    controlclick("Einstellungen", "OK", 1)
    winwait("Abmelden")
    IniWrite("setup.ini", "SETUP","STATE", "WFUP")
    controlclick("Abmelden", "&Ja", 6)

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


    Else
    ;==================Öffnen der setup.ini, Abfrage über Status======
    $var = IniRead("setup.ini", "SETUP", "STATE","")

    Select
    Case $var = "WFUP"
    ;====Winfuture Updatepackage===
    run("C:\apps\winfuture\update.exe")
    IniWrite("setup.ini", "SETUP","STATE", "WFUP1")
    $var = IniRead("setup.ini", "SETUP", "STATE","")


    Case $var = "WFUP1"
    ;====Defrag=====weiter hinter!!!!
    Opt("WinWaitDelay",100)
    Opt("WinTitleMatchMode",4)
    Opt("WinDetectHiddenText",1)
    Opt("MouseCoordMode",0)
    Run('C:\WINDOWS\system32\cmd.exe')
    WinWait("C:\WINDOWS\system32\cmd.exe","")
    If Not WinActive("C:\WINDOWS\system32\cmd.exe","") Then WinActivate("C:\WINDOWS\system32\cmd.exe","")
    WinWaitActive("C:\WINDOWS\system32\cmd.exe","")
    Send("defrag{SPACE}c{SHIFTDOWN}.{SHIFTUP}{CTRLDOWN}{ALTDOWN}ß{CTRLUP}{ALTUP}")
    Sleep(3000)
    Send("{ENTER}")
    Sleep(2000)
    send("{ENTER}")
    send("exit")
    send("{ENTER}")
    IniWrite("setup.ini", "SETUP","STATE", "DEFRAG")
    Run("restart.cmd")
    EndSelect

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

    EndIf
    WEnd
    EndIf
    GUIDelete()
    Exit

    [/autoit]

    Kann ich eigentlich für die einzelnen Schritte eigene AU3 Dateien erstellen und diese dann und zu Compilieren includen (zur besseren Übersicht und Wartbarkeit)?
    Wieder mal herzlichen Dank vorab...
    Gruß
    Marc

    2 Mal editiert, zuletzt von hessebou (10. November 2006 um 11:03)

    • Offizieller Beitrag

    Hi!

    Includen ist kein Problem, einfach die Syntaxvon #include aus der Hilfe beachten, dann ist es exakt so, wie wenn der Code literal dastehen würde.

    Nacheinander: Mit ProcessWaitClose kannst du warten, bis die jeweiligen Installationsprozesse beendet wurden.

    @Skripte: Oftmals wird mit Sleeps gearbeitet, besser ist vor jedem Klick WinWait und danach ControlClick, dann sollte es in jedem vorstellbaren Fall klappen.

    peethebee