Paar Probleme beim Patcher ...

  • Abend,

    ich bin gerade bei dem Projekt, einen Patcher zu erstellen, welcher die Md5 Checksummen der Dateien überprüft, ob sie mit den Md5 Checksummen im Ordner übereinstimmen und wenn nicht, dann sollen die Dateien heruntergeladen werden. Das Ding ist, das ich hier nicht ganz weiterkomme. In der Datalist.txt befindet sich der Dateiname und die Md5 Checksumme.
    Beispiel für Datalist.txt

    Spoiler anzeigen


    Data : "\Test\Schauen.txt" | Md5 : "0x10F9DF2863D87C5A2C7EDE258BC84063"
    Data : "\Test1.txt" | Md5 : "0xDEF6970BF3DF1492869C090C510D4A17"
    Data : "\Test2.txt" | Md5 : "0x6581587E574CD81C91D4AD1801B4482C"

    Als Webspace zum testen könnt ihr auch gerne mein nehmen , wo sich auch die Dateien, die ich eben geschrieben habe, drauf sind.
    http://white1991x.square7.ch

    Skript bitte per privater Nachricht senden. * Habe schon 2 Leute gefunden, die es machen würden.

    Skirpt, soweit wie ich war und ich nicht weiterkommt ;

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <INet.au3>
    #include <File.au3>
    #include <String.au3>
    #include <Array.au3>

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

    Global $aLines, $sMsg, $sMsg2

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

    $GUI = GUICreate("PatchUp", 551, 230, 280, 430)
    $Background = GUICtrlCreatePic(@ScriptDir & "\Data\BackgroundLoader.jpg", 72, 8, 413, 60)
    $GesamtProgress = GUICtrlCreateProgress(8, 104, 534, 25)
    $EinzelProgress = GUICtrlCreateProgress(8, 168, 534, 25)
    $LGesamtfortschritt = GUICtrlCreateLabel("Gesamtfortschritt", 8, 80, 200, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $LabelDownladdatei = GUICtrlCreateLabel("", 8, 144, 539, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)
    HttpSetUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.16") ;sonst streiken manche Freehoster wenn der AutoItUseragent gesetzt ist
    $SetState = 0

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    If $SetState = 0 Then
    _FileReadToArray(@ScriptDir & "\Data\DataList.txt", $aLines)
    $Open = FileOpen(@ScriptDir & "\Data\Adresse.txt")
    $Adresse = FileRead(@ScriptDir & "\Data\Adresse.txt")
    $GesamtBytes = 0
    Dim $aFiles[$aLines[0] + 1][2]
    For $i = 1 To $aLines[0]
    If $aLines[$i] <> "" Then
    $aFiles[$i][0] = $Adresse & '/' & $aLines[$i]
    $aFiles[$i][1] = InetGetSize($aFiles[$i][0])
    $aFiles[0][1] += $aFiles[$i][1]
    EndIf
    Next
    $aFiles[0][0] = $aLines[0]
    $iDownloaded = 0
    For $i = 1 To $aFiles[0][0]
    If $aFiles[$i][1] <> 0 Then
    $aLoaclPath = StringSplit($aLines[$i],"/")
    for $j = 1 to $aLoaclPath[0]-1
    if Not FileExists($aLoaclPath[$j]) Then DirCreate($aLoaclPath[$j])
    Next
    $GetData = InetGet($aFiles[$i][0], @ScriptDir & "\" & StringReplace($aLines[$i],"/","\"), 1, 1)
    GUICtrlSetData($LabelDownladdatei, $aFiles[$i][0] & ": ")
    Do
    $aInfo = InetGetInfo($GetData)
    $iPercentAll = Round(($iDownloaded + $aInfo[0]) / $aFiles[0][1] * 100, 2)
    $iPercentCurrent = Round($aInfo[0] / $aFiles[$i][1] * 100, 2)
    GUICtrlSetData($GesamtProgress, $iPercentAll)
    GUICtrlSetData($EinzelProgress, $iPercentCurrent)
    GUICtrlSetData($LGesamtfortschritt, "Gesamtfortschritt: " & $iPercentAll & "%")
    GUICtrlSetData($LabelDownladdatei, $aLines[$i] & " wird heruntergeladen : " & $iPercentCurrent & "%")
    ConsoleWrite($iDownloaded + $aInfo[0] & " " & $aFiles[0][1] & " " & $iPercentAll & @TAB & $aInfo[0] & " " & $aFiles[$i][1] & " " & $iPercentCurrent & @CRLF)
    Sleep(1000)
    Until $aInfo[2]
    If $aInfo[3] Then
    $iDownloaded += $aInfo[0]
    $sMsg &= $aFiles[$i][0] & @CRLF
    Else
    $sMsg2 &= $aFiles[$i][0] & @CRLF
    EndIf
    InetClose($GetData)
    EndIf
    Next
    $SetState += 1
    if $sMsg <> "" Then MsgBox(64, "Download beendet","Folgende Dateien wurden erfolgreich heruntergeladen:" & @CRLF & @CRLF & $sMsg)
    if $sMsg2 <> "" Then MsgBox(16, "Download beendet","Folgende Dateien konnten nicht heruntergeladen werden:" & @CRLF & @CRLF & $sMsg)
    EndIf
    WEnd

    [/autoit]

    Wenn ihr es fertig habt, wäre es nett, wenn ihr mir noch bei anderen Kleinigkeiten helfen könntet, z.B. , muss ich dort noch eine volle Fehlerwiedergabe mit reinmachen, also wenn z.B. etwas nicht gedownloadet werden kann, dass dann dort ansteht, welche Datei nicht gedownloadet werden konnte.

    3 Mal editiert, zuletzt von Julien (7. Februar 2012 um 19:34)

  • Hallo Julien,

    du solltest auch die Deteien: @scriptdir\Data\DataList.txt und adresse.txt in deinen Eröffnungsbeitrag laden, bzw. angeben welche Dateien auf dem Server diesen entsprechen.
    Adresse.txt enthält sicherlich

    Code
    http://white1991x.square7.ch


    Da die Dateien auf dem Server eh nur sinnlosen Text enthalten könntest du auch ruhig kleinere einstellen,

    mfg autoBert