Autoit Programm dauert lange bis es offen ist; Vorschläge für vereinfachung benötigt!

  • Hi habe folgendes Script geschrieben.
    Es soll die angegebenen Dateien aus dem Internet herunterladen, im Scriptdir speichern und dann installieren. Allerdings dauert es schon jetzt sehr lange bis die GUI überhaupt erscheint.
    Hat vll. jemand eine Idee wie man den Code allgemein kürzen bzw. vereinfachen kann?

    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.8.1
    Author: Keks alias Marco Haberstroh

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

    Script Function:
    Läd ausgewählte Standartprogramme wie Java und Flashplayer automatisch runter und installiert diese.
    Downloading the choosed programes and installed them.
    #ce ----------------------------------------------------------------------------

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

    ; Includes

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

    #RequireAdmin
    #include <GuiConstantsEx.au3>
    #include <GuiButton.au3>
    #include <File.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <progressconstants.au3>
    #include <windowsconstants.au3>

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

    ;Adressen/Adresses
    $DJavax86 = "http://javadl.sun.com/webapps/download/AutoDL?BundleId=79063"
    $DJavax64 = "1"
    $DFlash = "http://download.macromedia.com/get/flashplayer/current/licensing/win/install_flash_player_11_plugin.exe"
    $DReader = "ftp://ftp.adobe.com/pub/adobe/reader/win/11.x/11.0.00/de_DE/AdbeRdr11000_de_DE.exe"
    $DShock = "http://get.adobe.com/de/shockwave/thankyou/?installer=Shockwave_12.0.3.133_Windows_Slim_Other_Browsers"
    $DWinrarx86 = "http://www.winrar.de/dl/wrar420d.exe"
    $DWinrarx64 = "http://www.winrar.de/dl/winrar-x64-420d.exe"
    $DVLC = "http://get.videolan.org/vlc/2.0.7/win32/vlc-2.0.7-win32.exe"
    $DFirefoxx86 = "http://www.mozilla.org/de/firefox/new/#download-fx"
    $DFirefoxx64 = "2"
    $DDeep = "http://www.deepburner.com/download/DeepBurner1.exe"

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

    ;Dateigrößen
    $Sizejava86 = Round (InetGetSize($DJavax86)/1024/1024)
    $sizejava64 = Round (InetGetSize($DJavax64)/1024/1024,2)
    $Sizeflash = Round (InetGetSize($DFlash)/1024/1024,2)
    $sizereader = Round (InetGetSize($DReader)/1024/1024,2)
    $sizeshock = Round (InetGetSize($DShock)/1024/1024,2)
    $sizerar86 = Round (InetGetSize($DWinrarx86)/1024/1024,2)
    $sizerar64 = Round (InetGetSize($DWinrarx64)/1024/1024,2)
    $sizevlc = Round (InetGetSize($DVLC)/1024/1024,2)
    $sizefirefox86 = Round (InetGetSize($DFirefoxx86)/1024/1024,2)
    $sizefirefox64 = Round (InetGetSize($DFirefoxx64)/1024/1024,2)
    $sizedeep = Round (InetGetSize($DDeep)/1024/1024,2)

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

    ;GUI

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

    GUICreate ("Keks Dwler", 350, 300) ;Erstellt GUI/Create a GUI

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

    GUICtrlCreateTab (10,10,335,270)
    GUICtrlCreateTabItem ("Win XP x86")
    $Javaxp = GUICtrlCreateCheckbox ("Java",25,35)
    $Flashxp = GUICtrlCreateCheckbox ("Adobe Flashplayer", 25, 55)
    $Readerxp = GUICtrlCreateCheckbox ("Adobe Reader", 25, 75)
    $Shockxp = GUICtrlCreateCheckbox ("Shockwave Player", 25, 95)
    $Winrarxp = GUICtrlCreateCheckbox ("WinRar", 205, 35)
    $VLCxp = GUICtrlCreateCheckbox ("VLC Media Player", 205, 55)
    $Firefoxxp = GUICtrlCreateCheckbox ("Firefox", 205, 75)
    $Deepxp = GUICtrlCreateCheckbox ("Deepburner", 205, 95)
    $Prges1 = GUICtrlCreateProgress (25, 135, 300,20)
    $Label1 = GUICtrlCreateLabel("Nach dem Klicken auf Beginn, nichts mehr Klicken!",30,160)

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

    $Beginn1 = GUICtrlCreateButton ("Beginn", 150, 200)

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

    GUICtrlCreateTabItem ("Win XP x64")
    $Javaxp64 = GUICtrlCreateCheckbox ("Java",25,35)
    $Flashxp64 = GUICtrlCreateCheckbox ("Adobe Flashplayer", 25, 55)
    $Readerxp64 = GUICtrlCreateCheckbox ("Adobe Reader", 25, 75)
    $Shockxp64 = GUICtrlCreateCheckbox ("Shockwave Player", 25, 95)
    $Winrarxp64 = GUICtrlCreateCheckbox ("WinRar", 205, 35)
    $VLCxp64 = GUICtrlCreateCheckbox ("VLC Media Player", 205, 55)
    $Firefoxxp64 = GUICtrlCreateCheckbox ("Firefox", 205, 75)
    $Deepxp64 = GUICtrlCreateCheckbox ("Deepburner", 205, 95)
    $Prges2 = GUICtrlCreateProgress (25, 135, 300,20)
    $Label2 = GUICtrlCreateLabel("Nach dem Klicken auf Beginn, nichts mehr Klicken!",30,160)

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

    $Beginn2 = GUICtrlCreateButton ("Beginn", 150, 200)

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

    GUICtrlCreateTabItem ("Win7 x86")
    $Java7 = GUICtrlCreateCheckbox ("Java",25,35)
    $Flash7 = GUICtrlCreateCheckbox ("Adobe Flashplayer", 25, 55)
    $Reader7 = GUICtrlCreateCheckbox ("Adobe Reader", 25, 75)
    $Shock7 = GUICtrlCreateCheckbox ("Shockwave Player", 25, 95)
    $Winrar7 = GUICtrlCreateCheckbox ("WinRar", 205, 35)
    $VLC7 = GUICtrlCreateCheckbox ("VLC Media Player", 205, 55)
    $Firefox7 = GUICtrlCreateCheckbox ("Firefox", 205, 75)
    $Deep7 = GUICtrlCreateCheckbox ("Deepburner", 205, 95)
    $Prges3 = GUICtrlCreateProgress (25, 135, 300,20)
    $Label3 = GUICtrlCreateLabel("Nach dem Klicken auf Beginn, nichts mehr Klicken!",30,160)

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

    $Beginn3 = GUICtrlCreateButton ("Beginn", 150, 200)

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

    GUICtrlCreateTabItem ("Win7 x64")
    $Javax64 = GUICtrlCreateCheckbox ("Java",25,35)
    $Flashx64 = GUICtrlCreateCheckbox ("Adobe Flashplayer", 25, 55)
    $Readerx64 = GUICtrlCreateCheckbox ("Adobe Reader", 25, 75)
    $Shockx64 = GUICtrlCreateCheckbox ("Shockwave Player", 25, 95)
    $Winrarx64 = GUICtrlCreateCheckbox ("WinRar", 205, 35)
    $VLCx64 = GUICtrlCreateCheckbox ("VLC Media Player", 205, 55)
    $Firefoxx64 = GUICtrlCreateCheckbox ("Firefox", 205, 75)
    $Deepx64 = GUICtrlCreateCheckbox ("Deepburner", 205, 95)
    $Prges4 = GUICtrlCreateProgress (25, 135, 300,20)
    $Label4 = GUICtrlCreateLabel("Nach dem Klicken auf Beginn, nichts mehr Klicken!",30,160)

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

    $Beginn4 = GUICtrlCreateButton ("Beginn", 150, 200)

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

    GUISetState(@SW_SHOW) ; Zum Anzeigen der GUI nötig/Show GUI
    ;Button Befehle
    While 1
    Switch GUIGetMsg ()
    case $GUI_EVENT_CLOSE
    Exit
    case $Beginn1
    xpCheck()
    Case $Beginn2
    xp64Check()
    Case $Beginn3
    Win7Check()
    Case $Beginn4
    Win764Check()
    EndSwitch
    WEnd

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

    ;checkbefehl ob überhaupt was markiert wurde
    func XPCheck()
    if GUICtrlRead($Javaxp) =4 and GUICtrlRead($Flashxp) =4 And GUICtrlRead($Readerxp)=4 and GUICtrlRead($Shockxp)=4 and GUICtrlRead($Winrarxp)=4 and GUICtrlRead($VLCxp)=4 and GUICtrlRead($Firefoxxp)=4 and GUICtrlRead($Deepxp)=4 then
    MsgBox(1,"Error","Nichts ausgewählt!")
    Else
    XPx86()
    EndIf
    EndFunc

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

    Func xp64Check()
    if GUICtrlRead($Javaxp64) =4 and GUICtrlRead($Flashxp64) =4 And GUICtrlRead($Readerxp64)=4 and GUICtrlRead($Shockxp64)=4 and GUICtrlRead($Winrarxp64)=4 and GUICtrlRead($VLCxp64)=4 and GUICtrlRead($Firefoxxp64)=4 and GUICtrlRead($Deepxp64)=4 then
    MsgBox(1,"Error","Nichts ausgewählt!")
    Else
    xpx64()
    EndIf
    EndFunc

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

    Func Win7Check()
    if GUICtrlRead($Java7) =4 and GUICtrlRead($Flash7) =4 And GUICtrlRead($Reader7)=4 and GUICtrlRead($Shock7)=4 and GUICtrlRead($Winrar7)=4 and GUICtrlRead($VLC7)=4 and GUICtrlRead($Firefox7)=4 and GUICtrlRead($Deep7)=4 then
    MsgBox(1,"Error","Nichts ausgewählt!")
    Else
    win7()
    EndIf
    EndFunc

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

    Func Win764Check()
    if GUICtrlRead($Javax64) =4 and GUICtrlRead($Flashx64) =4 And GUICtrlRead($Readerx64)=4 and GUICtrlRead($Shockx64)=4 and GUICtrlRead($Winrarx64)=4 and GUICtrlRead($VLCx64)=4 and GUICtrlRead($Firefoxx64)=4 and GUICtrlRead($Deepx64)=4 then
    MsgBox(1,"Error","Nichts ausgewählt!")
    Else
    Win764()
    EndIf
    EndFunc

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

    ;Hauptfunktionen

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

    func XPx86()
    msgbox(1,GUICtrlRead($Javaxp),"2")
    If GUICtrlRead($Javaxp) =1 Then
    $hDL1= InetGet($DJavax86,@ScriptDir&"\java.exe",1,1)
    GUICtrlSetData($Label1, "Download gestartet")
    Sleep(1000)
    While InetGetInfo($hDL1,2) = False
    $Info1 = Round (InetGetInfo($hDL1,0)/1024/1024,2)
    $ipercent = Round(100/$Sizejava86*$info1)
    ConsoleWrite($ipercent & @LF)
    GUICtrlSetData($Label1, "Java Download: "&$info1&"MB"&" von "&$Sizejava86&" MB Geladen")
    GUICtrlSetData($Prges1,$ipercent)
    sleep (500)
    WEnd
    InetClose($hDL1)
    EndIf

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

    If GUICtrlRead($Flashxp)=1 Then
    $hDL2 = Inetget($DFlash,@ScriptDir&"\Flashplayer.exe",1,1)
    GUICtrlSetData($Label1,"Download gestartet")
    sleep(1000)
    While InetGetInfo($hDL2,2) = False
    $info2 = Round(InetGetInfo($hDL2,0)/1024/1024,2)
    $ipercent2 = Round(100/$Sizeflash*$info2)
    ConsoleWrite($ipercent2 & @LF)
    GUICtrlSetData($Label1, "Flash Download: "&$info2&"MB"&" von "&$Sizeflash&" MB Geladen")
    GUICtrlSetData($Prges1, $ipercent2)
    Sleep(500)
    WEnd
    InetClose($hDL2)
    EndIf

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

    If GUICtrlRead($Readerxp)=1 Then
    $hDL3= InetGet($DReader,@ScriptDir&"\Reader.exe",1,1)
    GUICtrlSetData($Label1,"Download gestartet")
    Sleep(1000)
    While InetGetInfo($hDL3,2) = False
    $info3 = Round(InetGetInfo($hDL3,0)/1024/1024,2)
    $ipercent3 = Round(100/$sizereader*$info3)
    ConsoleWrite($ipercent3 & @LF)
    GUICtrlSetData($Label1,"Reader Download: "&$info3&"MB"&" von "&$sizereader&" MB Geladen")
    GUICtrlSetData($Prges1, $ipercent3)
    Sleep(500)
    WEnd
    InetClose($hDL3)
    EndIf

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

    If GUICtrlRead($Shockxp)=1 Then
    $hDL4= InetGet($DShock,@ScriptDir&"\Shockwave.exe",1,1)
    GUICtrlSetData($Label1,"Download gestartet")
    Sleep(1000)
    While InetGetInfo($hDL4,2) = False
    $info4 = Round(InetGetInfo($hDL4,0)/1024/1024,2)
    $ipercent4 = Round(100/$sizeshock*$info4)
    ConsoleWrite($ipercent4 & @LF)
    GUICtrlSetData($Label1,"Shockwave Download: "&$info4&"MB"&" von "&$sizeshock&" MB Geladen")
    GUICtrlSetData($Prges1, $ipercent4)
    Sleep(500)
    WEnd
    InetClose($hDL4)
    EndIf

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

    If GUICtrlRead($Winrarxp)=1 Then
    $hDL5= InetGet($DWinrarx86,@ScriptDir&"\Winrar.exe",1,1)
    GUICtrlSetData($Label1,"Download gestartet")
    Sleep(1000)
    While InetGetInfo($hDL5,2) = False
    $info5 = Round(InetGetInfo($hDL4,0)/1024/1024,2)
    $ipercent5 = Round(100/$sizerar86*$info5)
    ConsoleWrite($ipercent5 & @LF)
    GUICtrlSetData($Label1,"Winrar Download: "&$info5&"MB"&" von "&$sizerar86&" MB Geladen")
    GUICtrlSetData($Prges1, $ipercent5)
    Sleep(500)
    WEnd
    InetClose($hDL5)
    EndIf

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

    If GUICtrlRead($VLCxp)=1 Then
    $hDL6= InetGet($DVLC,@ScriptDir&"\VLC.exe",1,1)
    GUICtrlSetData($Label1,"Download gestartet")
    Sleep(1000)
    While InetGetInfo($hDL6,2) = False
    $info6 = Round(InetGetInfo($hDL6,0)/1024/1024,2)
    $ipercent6 = Round(100/$sizevlc*$info6)
    ConsoleWrite($ipercent6 & @LF)
    GUICtrlSetData($Label1,"VLC Download: "&$info6&"MB"&" von "&$sizevlc&" MB Geladen")
    GUICtrlSetData($Prges1, $ipercent6)
    Sleep(500)
    WEnd
    InetClose($hDL6)
    EndIf

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

    If GUICtrlRead($Firefoxxp)=1 Then
    $hDL7= InetGet($DFirefoxx86,@ScriptDir&"\Firefox.exe",1,1)
    GUICtrlSetData($Label1,"Download gestartet")
    Sleep(1000)
    While InetGetInfo($hDL7,2) = False
    $info7 = Round(InetGetInfo($hDL7,0)/1024/1024,2)
    $ipercent7 = Round(100/$sizefirefox86*$info7)
    ConsoleWrite($ipercent7 & @LF)
    GUICtrlSetData($Label1,"Firefox Download: "&$info7&"MB"&" von "&$sizefirefox86&" MB Geladen")
    GUICtrlSetData($Prges1, $ipercent7)
    Sleep(500)
    WEnd
    InetClose($hDL7)
    EndIf

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

    if GUICtrlRead($Deepxp)=1 Then
    $hDL8= InetGet($DDeep,@ScriptDir&"\Deep.exe",1,1)
    GUICtrlSetData($Label1,"Download gestartet")
    Sleep(1000)
    While InetGetInfo($hDL8,2) = False
    $info8 = Round(InetGetInfo($hDL8,0)/1024/1024,2)
    $ipercent8 = Round(100/$sizedeep*$info8)
    ConsoleWrite($ipercent8 & @LF)
    GUICtrlSetData($Label1,"DeepBurner Download: "&$info8&"MB"&" von "&$sizedeep&" MB Geladen")
    GUICtrlSetData($Prges1, $ipercent8)
    Sleep(500)
    WEnd
    InetClose($hDL8)
    EndIf
    GUICtrlSetData($Label1,"Bin Fertig, was nun? :D")
    EndFunc

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

    Func xpx64()
    MsgBox(1,"hallo","hallo")
    EndFunc

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

    func win7()
    msgbox(1,"hallo","hallo")
    EndFunc

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

    func win764()
    msgbox(1,"hallo","hallo")
    EndFunc

    [/autoit]

    Wie ihr seht bin ich auch noch nicht ganz fertig damit.

    Vielen Danke schonmal im Vorraus

    Gruß
    Marco

    Einmal editiert, zuletzt von FlairSecret (13. Januar 2014 um 18:12)

  • Hat vll. jemand eine Idee wie man den Code allgemein kürzen bzw. vereinfachen kann?

    Was hat die Länge des Codes mit der Ladezeit zu tun? Warum der Start so lange dauert, liegt an den Inet...() Befehlen, die alle Größen laden; erst danach wird die GUI überhaupt initialisiert.

  • Ach daran habe ich garnicht gedacht. :thumbup:
    Wäre wohl schlauer, dieses nur zu laden wenn sie auch gebraucht werden.
    Dass Probiere ich mal aus. :D

    Gibt es sonst noch irgendwas was ich sinvoller gestalten könnte oder kann ich das so weiterführen?

    Dankeschön nochmal


    Edit:
    Schneller öffnen Funktioniert dadurch wunderbar!
    DankeDankeDanke :D

    Einmal editiert, zuletzt von FlairSecret (10. Januar 2014 um 13:10)

  • Ob du erst die GUI erstellst oder erst die sachen lädst, es wirkt vielleicht anders auf dich da du schon die GUI siehst, aber durch das tauschen der Codeschnipsel wirst du es nicht "schneller" öffnen ;)

    Grüße Yaerox

    Grüne Hölle