Update Programm - Liste

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

    Update Programm - Liste

    Hey ho Community ^^

    Ich weiß ich bin neu und falls ich grade im falschen Forum bin tuts mir leid ^_^'
    Derzeit erstelle ich einen Patcher bzw. ein Updater für ein kleines Spiel von mir.
    Da ich aber recht neu in VB bin aber mir die Sprache durchaus gefällt, arbeite ich mich ein und bin sehr lernbegierig :P

    Nun zum Problem... Bevor ich etwas Patchen kann muss ich eine Patchliste erstellen (eigenständiges Programm) dass Hash , Directory, und Datum angeben soll.
    Bisher läuft alles soweit ganz gut, jedoch möchte ich das der Pfad nicht komplett drin steht, sondern nur die Dateien und deren Unterordner.
    Also bsp.:

    VB.NET-Quellcode

    1. C:\Users\Shinji\documents\visual studio 2012\Projects\WindowsApplication2\WindowsApplication2\bin\Debug\WindowsApplication2.xml

    soll zu

    VB.NET-Quellcode

    1. bin\Debug\WindowsApplication2.xml

    werden.

    Derzeitiger Code ist:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, _
    2. ByVal e As System.EventArgs) Handles Button1.Click
    3. If My.Computer.FileSystem.FileExists("G:\Download\FileList.txt") Then
    4. My.Computer.FileSystem.DeleteFile("G:\Download\FileList.txt")
    5. End If
    6. Dim path As String = "G:\Download\FileList.txt"
    7. Dim fs As FileStream = File.Create(path)
    8. fs.Close()
    9. Dim sFile1 As String = "G:\Download\datei1.ext"
    10. Dim sFile2 As String = (CurDir() + "\datei2.ext")
    11. Select Case FileCompare(sFile1, sFile2)
    12. Case FileCompareStatus.Identical
    13. textbox_1.Text = "Die Dateien sind identisch!"
    14. Case FileCompareStatus.SizeDifferent
    15. For Each lol As String In
    16. My.Computer.FileSystem.GetFiles(CurDir())
    17. Dim MD5 As New MD5CryptoServiceProvider
    18. Dim Hash As Byte()
    19. Dim Result As String = ""
    20. Dim entertaste As String = ""
    21. Dim pfadderdatei As String = ""
    22. Dim Tmp As String = ""
    23. Dim datum As String = ""
    24. Dim FN As New FileStream(lol, FileMode.Open, FileAccess.Read, FileShare.Read, 8192)
    25. MD5.ComputeHash(FN)
    26. FN.Close()
    27. Hash = MD5.Hash
    28. For i As Integer = 0 To Hash.Length - 1
    29. Tmp = Hex(Hash(i))
    30. If Len(Tmp) = 1 Then Tmp = "0" & Tmp
    31. Result += Tmp
    32. Next
    33. entertaste = entertaste & vbCrLf
    34. datum = FileDateTime(lol)
    35. My.Computer.FileSystem.WriteAllText(
    36. "G:\Download\FileList.txt", "hash " & Result & " " & lol & " " & datum & entertaste, True)
    37. Next
    38. textbox_1.Text = "Liste wurde nun erstellt"
    39. Case FileCompareStatus.ContentDifferent
    40. textbox_1.Text = "Die Dateien haben unterschiedlichen Inhalt!"
    41. Case FileCompareStatus.Error
    42. textbox_1.Text = "Fehler beim Dateivergleich!"
    43. End Select
    44. End Sub


    #Edit Hoppla den Text der FileList vergessen...

    VB.NET-Quellcode

    1. hash A19A2658BA69030C6AC9D11FD7D7E3C1 C:\Users\Shinji\documents\visual studio 2012\Projects\WindowsApplication2\WindowsApplication2\bin\Debug\WindowsApplication2.vshost.exe.manifest 17.03.2010 21:39:16
    2. hash B049ABC7ADE0E69E89D5914FB1CF6F91 C:\Users\Shinji\documents\visual studio 2012\Projects\WindowsApplication2\WindowsApplication2\bin\Debug\WindowsApplication2.xml 27.06.2014 07:56:54


    WAHAAAA bitte nicht schimpfen eines meiner ersten VB projekte (bitte auf das Compare mal nicht achten, habs nur erstmal drinne..).
    Bräuchte also demnach an dieser Stelle Hilfe mit dem Pfad.

    Mfg Shinji

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Shinjix3“ ()

    Shinjix3 schrieb:

    Bräuchte also demnach an dieser Stelle Hilfe mit dem Pfad.
    Was soll geholfen werden?

    Ich hab eine Methode, die ermittelt von vielen Strings die Position, wo die erste Differenz auftritt:

    VB.NET-Quellcode

    1. <Extension()> _
    2. Public Function FirstDifference(texts As IList(Of String)) As Integer
    3. Dim commonLength = texts.Min(Function(s) s.Length)
    4. Dim ubound = texts.Count - 1
    5. For retVal = 0 To commonLength - 1
    6. Dim cmp = texts(0)(retVal)
    7. For ii = 1 To ubound
    8. If Not texts(ii)(retVal).Equals(cmp) Then Return retVal
    9. Next
    10. Next
    11. Return commonLength
    12. End Function
    Von dieser Positon kann man LastIndexOf("\"c) aufsuchen, um korrekt am PfadSeparator auftrennen zu können

    (Also falls der gemeinsame Pfad-Teil vieler Dateien gesucht sein sollte - sicher bin ich aufgrund deiner Frage nicht. :| )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Da der böse ~blaze~ (:P) meinen Beitrag gelöscht hat wegen mangelnder Infos:
    Nimm bitte das updatesystem.net.

    Das ist 1) sicher, weil die Pakete signiert werden, was sehr wichtig ist (Updater - Warum sollte man eigene Updater vermeiden?) und 2) sparst Du Dir dann das alles und kannst bequem alles managen. ;)
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: