Version.txt auf rechner mit Versions.txt auf server vergleichen???

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von TheMatI.

    Version.txt auf rechner mit Versions.txt auf server vergleichen???

    Hi leute wie die Über schrift es sagt hab ich ein problem ich hab mir jetzt einen Patcher gebastelt der geht nur hab ich ein problem er patch immer wenn in der Patchconfig etwas drin steht.das will ich aber nicht habe.er soll über die Versions.txt die eigene version mit der auf dem Server vergleichen und erst dann runter laden.

    also ich bin soweit das er die Versions.txt runter lädt aber nicht mit der alten vergleicht und gegebenfalls ersetzt.wie bekomme ich das hin???

    gruß MultiCoder ?(
    wie ist denn deine Versionsnummer aufgebaut?
    Wenn es nach dem Schema a.b.c.d ist, dann kannst du über System.Version.Parse einen String in die System.Version Klasse konvertieren lassen und anschließend mit den größer/kleiner-Operatoren vergleichen...
    achja statt die Datei zu Downloaden, wäre es denke ich eine Option lieber den String direkt herunterzuladen, find ich schöner^^
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Edit:// Richtig : jvbsl hat schon recht

    du solltest den string downloaden z.b

    VB.NET-Quellcode

    1. 'Version Deklaieren:
    2. Dim version As String = "1.0"
    3. If WebClient1.DownloadStirng("Addresse") > version Then
    4. If My.Computer.FileSystem.FileExists("Pfad ich würds eher mit SaveFileDialog machen...") Then
    5. My.Computer.FileSystem.DeleteFile("Pfad...")
    6. WebClient1.DownloadFileAsync(New Uri("Addresse"), "pfad")
    7. End If
    8. End If

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

    ja ich habe recht, aaaber der Vergleich in deinem Fall mit dem größer Zeichen würde Alphabetisch überprüfen, somit wäre
    1.1 < 1.12 z.B. und das will doch niemand...also hab ich deinen Code mal nach C&P + Meinem geändert:

    VB.NET-Quellcode

    1. Dim version As String = "1.0"
    2. If System.Version.Parse(WebClient1.DownloadStirng("Addresse")) > System.Version.Parse(version) Then
    3. If My.Computer.FileSystem.FileExists("Pfad ich würds eher mit SaveFileDialog machen...") Then
    4. My.Computer.FileSystem.DeleteFile("Pfad...")
    5. WebClient1.DownloadFileAsync(New Uri("Addresse"), "pfad")
    6. End If
    7. End If

    natürlich wäre TryParse besser, was du dann aber selbst noch draus machen solltest ;)

    Edit: Es heißt jvbsl :P
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

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

    also das hörrt dich hilfreich an nur ist da immer noch das Problem das dann ja nur ich die Version ändern kann.aber das will ich ja nicht ich will ja das programm für andere anbieten und da ist es schlecht wenn die Version nur in Code änder bar ist kann man das nicht so machen das die Version in einer Ini datei steht und mit dem Server Verglichen wird???

    Also so Ini < Server dann Patcht er und als aller letztes ändert er in der Ini die version auf wie folgt:

    Ini = Server

    wäre das möglich??? ?(
    gut Parse gibts anscheinend erst ab ner relativ neuen Framework Version, aber dafür kannst du dem Konstruktor einen String übergeben...:

    VB.NET-Quellcode

    1. Dim version As String = "1.0"
    2. If New System.Version(WebClient1.DownloadStirng("Addresse")) > New System.Version(version) Then
    3. If My.Computer.FileSystem.FileExists("Pfad ich würds eher mit SaveFileDialog machen...") Then
    4. My.Computer.FileSystem.DeleteFile("Pfad...")
    5. WebClient1.DownloadFileAsync(New Uri("Addresse"), "pfad")
    6. End If
    7. End If

    Viel Glück^^
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    VB.NET-Quellcode

    1. Dim version As String = INI_ReadValueFromFile("Denny", "Text1", "", ".\Einstellungen.ini")

    If New System.Version(WebClient1.DownloadStirng(INI_ReadValueFromFile("Denny", "Text2", "", ".\Einstellungen.ini"))) > New System.Version(version) Then

    VB.NET-Quellcode

    1. If My.Computer.FileSystem.FileExists(INI_ReadValueFromFile("Denny", "Text3", "", ".\Einstellungen.ini")) Then
    2. My.Computer.FileSystem.DeleteFile(INI_ReadValueFromFile("Denny", "Text3", "", ".\Einstellungen.ini"))
    3. WebClient1.DownloadFileAsync(New Uri("INI_ReadValueFromFile("Denny", "Text2", "", ".\Einstellungen.ini")"), "INI_ReadValueFromFile("Denny", "Text3", "", ".\Einstellungen.ini")")
    4. End If
    5. End If



    wollte mal wissen ob das so gehen kann andern falls hab ich kein plan ichs hin bekommen soll.der rote text teil gibt er mir einen Fehler weis aber nicht welchen.

    edit checke das nicht könnt ihr mirs nicht einfach sagen das klappt mit dem code irgentwie auch nit.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „MultiCoder“ ()

    Also du hast da ein paar fehler rein^^

    VB.NET-Quellcode

    1. Dim version As String = INI_ReadValueFromFile("Denny", "Text1", "", ".\Einstellungen.ini")
    2. If New System.Version(WebClient1.DownloadStirng(INI_ReadValueFromFile("Denny", "Text2", "", ".\Einstellungen.ini"))) > New System.Version(version) Then
    3. If My.Computer.FileSystem.FileExists(INI_ReadValueFromFile("Denny", "Text3", "", ".\Einstellungen.ini")) Then
    4. My.Computer.FileSystem.DeleteFile(INI_ReadValueFromFile("Denny", "Text3", "", ".\Einstellungen.ini"))
    5. WebClient1.DownloadFileAsync(New Uri(INI_ReadValueFromFile("Denny", "Text2", "", ".\Einstellungen.ini")), "INI_ReadValueFromFile("Denny", "Text3", "", ".\Einstellungen.ini"))
    6. End If
    7. End If

    Denke mal dass das fehler waren aber warum machst du die version im code net fest? Hier ein Beispiel:

    Du kannst den Downloadstring ja immer verändern auf deinen server also:
    Machst du in Version deine Version fest, wenn du dann ein Update rausbringst machst du den Text des Downloadstrings einfach um 0.1 höher als die Version.
    Oder 0.01 .... In Jeder Version kannst du ja den Code verändern also wenn du jetzt nen Patcher machen willst, dann würde es so eigentlich passen.
    werde es mal versuchen.wenn klappt bekommste großes danke schön.und das mit der festen version ist so das prog ist nicht für mich selbst sondern auch für andere gedacht die den code nicht ändern können.

    Edit es kommt immer nochn fehler siehe Screenshot.
    Bilder
    • image61.jpg

      331,16 kB, 1.341×458, 124 mal angesehen

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

    Edit://

    VB.NET-Quellcode

    1. Dim version As String = "Application.Startuppath & .....

    Dass zeichen '' " '' vor Application.Startuppath... muss weg....
    weiteres hat jvbsl beschrieben

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „TheMatI“ ()

    jetzt mal ganz langsam, ich habe doch bereits gesagt, warum der Code oben nicht richtig funktionieren kann...
    aber warum das Parsen bei der version Variable nicht funktionieren kann ist klar...du übergibst dem Programm als Versionsnummer:
    "Application.StartupPath & \version.txt"
    was eindeutig keine gültige Versionsnummer ist und zweitens ist Application.StartupPath eine Variable, welche nicht in Anführungszeichen stehen darf, das hier wird aber immernoch nicht funktionieren:
    Application.StartupPath & "\version.txt"
    du hast nun zwar einen gültigen Pfad aber keine Versionsnummer, du musst also die Datei in die Variable laden(kleiner Tipp: IO.File.ReadAllText z.B.)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---