Progressbar in Update einbauen

02/09/2011 23:45 Ghostleader111#1
Hallo AutoIt´ler,

ich wende mich an euch mit einer Frage die für die meisten von euch sicherlich einfach zu beantworten ist, aber für mich leider nicht.
Und zwar setze ich euch hier unseren Update Code in eine Code Box und möchte gerne wissen wie, wo und was ich an welche stelle setzen muss um vom Update start bis ende einen Ladebalken mitlaufen zu haben!

Schön wäre es wenn ihr mir beim einsetzen in den Code vielleicht kurz was dazu schreiben könntet warum gerade das und warum es dort hin kommt, damit ich es nachvollziehen und dadurch verstehen und lernen kann!

Vielen dank!

Hier der Code:
Code:
Func UPDATECHECK()
	DATENBANKENPRUEFEN()
	If $M <> 700 Then
		$TEMP[1] = GUICtrlCreateLabel(TRANSLATION("Es wird geprüft, ob neue Updates vorliegen. Bitte warten..."), 180, 320, 520, 25, $SS_CENTER)
		GUICtrlSetFont(-1, 14, 400)
	EndIf
	FileSetAttrib("*.*", "-r", 1)
	$VAR = 1
	If $VAR Then
		If IniRead($SCRIPTPATH & "data\config.ini", "TestUpdate", "Server", $ALTERNATIVEUPDATESERVER) = "http://www.test-test.eu" Then
			IniWrite($SCRIPTPATH & "data\config.ini", "TestUpdate", "Server", $ALTERNATIVEUPDATESERVER)
		EndIf
		$TZ = LOADFILE(IniRead($SCRIPTPATH & "data\config.ini", "TestUpdate", "Server", $ALTERNATIVEUPDATESERVER) & "/Updateinfo.data", $SCRIPTPATH & "data\Updateinfo.data")
		If $TZ = 1 Then
			$UNR = Number(IniRead($SCRIPTPATH & "data\Updateinfo.data", "Serverversion", "Versionnr", ""))
			$UPFAD = IniRead($SCRIPTPATH & "data\Updateinfo.data", "Serverversion", "Versionname", "")
			$FMIN = IniRead($SCRIPTPATH & "data\Updateinfo.data", "Serverversion", "Fullversionnr", "")
			$UMINPFAD = IniRead($SCRIPTPATH & "data\Updateinfo.data", "Serverversion", "Fullversionname", "")
			If $M <> 700 Then GUICtrlDelete($TEMP[1])
			If $LUPDATE = 0 Then
				If $UNR = 0 Then
					MsgBox(16, TRANSLATION("Updatecheck Fehler"), TRANSLATION("Die Updatedatei wurde vom Server fehlerhaft geladen!"), 0)
				ElseIf $UNR > $VNR Then
					If $VNR > $FMIN Then
						$JANEIN = MsgBox(68, "Update Information", TRANSLATION("Neues Update") & " '" & $UPFAD & "' " & TRANSLATION("verfügbar. Laden?"), 0)
						If $JANEIN = 6 Then
							If $M <> 700 Then
								$TEMP[1] = GUICtrlCreateLabel(TRANSLATION("Neues Update wird geladen. Bitte warten..."), 180, 320, 520, 25, $SS_CENTER)
								GUICtrlSetFont(-1, 14, 400)
							EndIf
							$FILE = IniRead($SCRIPTPATH & "data\config.ini", "TestUpdate", "Server", $ALTERNATIVEUPDATESERVER) & "/" & $UPFAD & ".exe"
							FileDelete($SCRIPTPATH & "Updates\Test Test Update*.*")
							LOADFILE($FILE, $SCRIPTPATH & "Updates\" & $UPFAD & ".exe")
							GUICtrlDelete($TEMP[1])
							MsgBox(64, "Update Information", TRANSLATION("Update wurde geladen und wird nun installiert. Der Test wird dazu geschlossen."), 0)
							If WinExists("Test-Counter") Then
								WinKill("Test-Counter")
							EndIf
							If WinExists("Test-Tray") Then
								WinKill("Test-Tray")
							EndIf
							Run($SCRIPTPATH & "Updates\" & $UPFAD & ".exe")
							Exit
						EndIf
					Else
Mfg Ghostleader
02/09/2011 23:56 KDeluxe#2
InetGetInfo()

Wär evtl. gut wenn du alle zusammenhängende Funktionen vollständig posten würdest, mit dem Codefetzen kann man nichts anfangen.
02/10/2011 05:46 Ghostleader111#3
Hallo KillerDeluxe,

ich weiss leider nicht genau was noch fehlen soll, der Code des Programmes ist insgesammt 27500 Zeilen lang und den kann ich auch nicht im ganzen Posten! Das was ich hier gepostet habe ist die Update Funktion. Was fehlt denn noch?

Mfg
02/10/2011 14:22 KDeluxe#4
Ich bin mir zu 100% sicher, dass man das Script kürzen kann.

Viele Wege führen nach Rom, hier ist einer:
PHP Code:
#include <GUIConstants.au3>

GUICreate("Download"22065)
$Progress GUICtrlCreateProgress(101020015)
$Button GUICtrlCreateButton("Download"103520025)
GUISetState()

Global 
$File$Download False
$URL 
"http://www.autoitscript.com/files/autoit3/autoit-v3-setup.exe"
$FileName = @ScriptDir "\AutoIt v3 Setup.exe"

While Sleep(10)
    
$nMsg GUIGetMsg()
    If 
$nMsg == $GUI_EVENT_CLOSE Then
        
Exit
    ElseIf 
$nMsg == $Button Then
        
If InetGetSize($URL) > 0 Then     ;wenn die Datei existiert
            
If $Download Then             ;wenn die Datei gedownloaded wird
                $Download 
False
                InetClose
($File)
                
FileDelete($FileName)
                
GUICtrlSetData($Progress0)
                
GUICtrlSetData($Button"Download")
            Else                         ;
wenn der Download noch nicht läuft
                $Download 
True
                $File 
InetGet($URL$FileName11)
                
GUICtrlSetData($Button"Abbruch")
            EndIf
        EndIf
    EndIf

    If 
$Download Then                     ;wenn die Datei gedownloaded wird
        $Info 
InetGetInfo($File)        ;Informationen über den momentanen Download ($File)
        
GUICtrlSetData($Progress$Info[0] * 100 $Info[1]);prozentualer Fortschritt des Downloads

        
If $Info[2Then                ;wenn die Datei vollständig herunter geladen wurde
            GUICtrlSetData
($Button"Download")
            
InetClose($File)
            
$Download False
        
EndIf
    EndIf
WEnd 
02/10/2011 15:23 Ghostleader111#5
Hallo KillerDeluxe,

danke erstmal für die Arbeit die du dir gemacht hast! Versteh mich bitte nicht falsch, das Scrippt soll sich eigendlich nicht ändern, da ich noch nicht soweit in AutoIt bin um den Rest des Codes dann an deine Variante an zu passen fals du diese jetzt überhaupt für mich so geschrieben hast und es nicht nur ein Beispiel ist was ich ja nun garnicht weiss Sorry!

Kann mann denn den Teil der Progressbar den ich in deinem Script sehe nicht in das von mir gezeigte eintragen?
Ich weiss das ich ein schwerer Fall in der Hinsicht bin, aber hoffe dennoch auf Nachsicht und weitere Hilfe!
Ich möchte ja unbedingt viel lernen aber Rom ist ja auch nicht an einem Tag erbaut und leider ist es ja mit der lernerei auch so :(

Mfg Ghostleader

Ps. was brauchst du/ihr denn noch was fehlt um mir da direkt helfen zu können?
02/10/2011 15:41 KDeluxe#6
Das ist ein sehr kleines Script, zudem recht simpel. Mit dem geposteten Codefetzen von dir kann man nun mal nicht viel machen.
02/10/2011 16:01 Ghostleader111#7
Ich weiss ja nicht was du von wo noch brauchst. Wenn ich das wüsste dann wäre das ja einfacher die zu schicken!

Ist denn das nicht genau das was benötigt wird?
Code:
							If $M <> 700 Then
								$TEMP[1] = GUICtrlCreateLabel(TRANSLATION("Neues Update wird geladen. Bitte warten..."), 180, 320, 520, 25, $SS_CENTER)
								GUICtrlSetFont(-1, 14, 400)
							EndIf
							$FILE = IniRead($SCRIPTPATH & "data\config.ini", "TestUpdate", "Server", $ALTERNATIVEUPDATESERVER) & "/" & $UPFAD & ".exe"
							FileDelete($SCRIPTPATH & "Updates\Test Test Update*.*")
							LOADFILE($FILE, $SCRIPTPATH & "Updates\" & $UPFAD & ".exe")
							GUICtrlDelete($TEMP[1])
mfg
02/10/2011 17:31 KDeluxe#8
Ich würde mal meinen, dass deine "LOADFILE()" Funktion nichts anderes macht, als InetGet zu benutzen. Diese Funktion müsstest du einfach entsprechend meines Beispiels anpassen.
02/11/2011 05:31 Ghostleader111#9
Hallo KillerDeluxe,

danke für deine vielen Antworten. Nun noch eine frage. Und zwar was alles aus deinem gezeigten Code müsste ich für mich übernehmen und passt das da in meinen wie do es so schön nennst Code Schnippsel, oder muss ich noch nach etwas anderem im Quellcode suchen?

Mfg Ghostleader
02/11/2011 14:32 KDeluxe#10
Wenn das Script trotz des Download weiter benutzbar sein sollte, müsstest du alles übernehmen. Andernfalls würde es auch so gehen:
PHP Code:
Func LOADFILE($URL$Filename$Progressbar)
    If 
InetGetSize($URL) > 0 Then ;wenn die Datei existiert
        $Download 
InetGet($URL$Filename11)
        Do
            
$Info InetGetInfo($Download)
            
GUICtrlSetData($Progressbar$Info[0] * 100 $Info[1])
        
Until $Info[2]
        Return 
SetError(0""True) ;Datei wurde erfolgreich herunter geladen
    
Else
        Return 
SetError(1""False) ;Datei existiert nicht
    
EndIf
EndFunc 
02/11/2011 15:24 Ghostleader111#11
Hallo KillerDeluxe,

danke wiedereinmal für deine Mühe, nur leider verstehe ich deinen Satz nicht so recht:
Quote:
Wenn das Script trotz des Download weiter benutzbar sein sollte, müsstest du alles übernehmen. Andernfalls würde es auch so gehen:
Was soll das bedeuten?
Wenn ich das von dir zuletzt erstellte benutze geht das ganze skript von mir nicht mehr, aber wenn ich den ganzen code von weider oben nehme geht es weiterhin oder wie soll ich das verstehen?

Ich weiss aber auch immernoch nicht wo ich bei mir dann egal welches deiner beiden diese einfügen muss!:confused:

Ogott, ich weiss das ich ein schwerer Fall bin!

Mfg Ghostleader
02/11/2011 17:13 KDeluxe#12
Ich kann beim besten willen nicht verstehen, was an meinem kleinen Script nicht nachvollziehbar ist. Es lässt sich ohne Probleme in jedes Script einbinden.

PHP Code:
;/////////////
;Hier ist deine GUI
;/////////////

;/////////////////////////////////////////////////////////////////////
Global $File$Download False ;globale Variablen
;/////////////////////////////////////////////////////////////////////

While Sleep(10) ;deine Hauptschleife
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
;....
        Case 
$DeinButtonUmDenDownloadZuStarten
            $Download 
LOADFILE("http://www.autoitscript.com/files/autoit3/autoit-v3-setup.exe", @ScriptDir "\AutoIt v3 Setup.exe")
        ;...
    EndSwitch
    ;...

    If 
$Download Then
        $Info 
InetGetInfo($File)
        
GUICtrlSetData($DeineProgressbarFuerDenAktuellenDownloadStatus$Info[0] * 100 $Info[1])

        If 
$Info[2Then
            InetClose
($File)
            
$Download False
        
EndIf
    EndIf
WEnd

Func LOADFILE
($URL$Filename)
    If 
InetGetSize($URL) > 0 Then
        $File 
InetGet($URL$Filename11)
        Return 
SetError(0""True)
    Else
        Return 
SetError(1""False)
    EndIf
EndFunc 
Wenn du nicht in der Lage bist, diese paar Zeilen in dein Script einzubinden, kann dir niemand helfen, dein Script steht ja niemanden zur Verfügung. Du solltest mal damit anfangen, das zu lernen, was du benutzen möchtest. Per C&P kommt man auf langem Wege nicht weit, das solltest du spätestens jetzt begriffen haben.
02/11/2011 19:57 Ghostleader111#13
Danke für die Mühe die du dir mit mir gegeben hast!

Mfg Ghostleader