Updater funktioniert nicht richtig..!?

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Lord Maul.

    Updater funktioniert nicht richtig..!?

    Moinsen!

    Ich habe jetzt einen Updater geschrieben, der nicht funktioniert.
    Nach reiner Logik sollte das eigentlich einwandfrei funktionieren, aber naja.

    Das Prinzip:
    Ich lade eine Textdatei herunter und überprüfe den Inhalt mit dem Inhalt einer Textdatei im Anwendungsverzeichnis. Die heruntergeladene Datei enthält die Zahl 5, die auf dem Computer die Zahl 4. Wenn die Zahl 1 größer als die Zahl 2 (5, 4) ist, soll er die neue Datei herunterladen. Wenn nicht, dann soll er halt die Anwendung starten.

    Soweit so gut, nur ich hänge an der Überprüfung. Ich habe an der Stelle eine If - Anweisung:

    VB.NET-Quellcode

    1. If New > Old Then
    2. Dim res As MsgBoxResult = MsgBox("Update gefunden. Herunterladen?", MsgBoxStyle.YesNo)
    3. If res = MsgBoxResult.Yes Then
    4. DL3.DownloadFileAsync(New Uri("hier halt die URL zur Datei", Application.StartupPath & "\anwn.exe")
    5. DELFILES() '<- Hier sollten die Dateien gelöscht werden
    6. Else
    7. MsgBox("Update Abgebrochen.", MsgBoxStyle.Exclamation)
    8. Process.Start(Application.StartupPath & "\anw.exe")
    9. Application.Exit
    10. End If
    11. Else
    12. MsgBox("Bereits auf dem neuesten Stand.")
    13. Process.Start("Appliction.StartupPath & "\anw.exe")
    14. Application.Exit
    15. End If
    16. Private Sub DL3_DownloadCompleted(ByVal sender As Object, ByVal e As DownloadFileCompletedEventArgs) Handles DL3.DownloadFileConpleted
    17. MoveFiles() ' <- Bennent die heruntergeladene Datei um damit auch alles später funktioniert
    18. End Sub
    19. Private Sub MoveFiles()
    20. File.Move(Application.StartupPath & "\anwn.exe", Application.StartupPath & "\anw.exe")
    21. ' Hier steht auch noch eine andere, aber ist nicht relevant für mein Problem
    22. End Sub


    So. Hier liegt auch das Problem:
    Ich bekomme die MessageBox "Bereits auf dem neuesten Stand.". Aber: Er lädt die Datei herunter die er herunterladen soll wen ein Update verfügbar ist.
    Er benennt die heruntergeladene Exe auch um, doch löscht die Textdokumente nicht und schreibt auch nicht den neuen Text hinein (Also die Zahl 5).

    Für mich heißt das im Prinzip:
    Er führt Codeteile von beiden Seiten aus (von dem Download und dem kein Update verfügbar).

    Wo liegt hier mein Fehler? Ich blicke nicht durch. Hab das jetzt so oft geändert und rumprobiert, ich komme einfach nicht auf die Lösung.
    Einfacher Denkfehler?

    Bitte um Hilfe :S

    Lord Maul
    DL3.DownloadFileAsync(New Uri("hier halt die URL zur Datei", Application.StartupPath & "\anwn.exe")
    DELFILES() '<- Hier sollten die Dateien gelöscht werden

    das sieht mir stark danach aus, als ob du runterlädst und währenddessen das passiert(durch DownloadFileAsync, wird hier nicht gewartet) versuchst du die Dateien zu löschen? Evtl. kommt ja auch eine Fehlermeldung?
    Process.Start("Appliction.StartupPath & "\anw.exe")
    das erste Anführungszeichen ist zu viel ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    jvbsl schrieb:

    DL3.DownloadFileAsync(New Uri("hier halt die URL zur Datei", Application.StartupPath & "\anwn.exe")
    DELFILES() '<- Hier sollten die Dateien gelöscht werden

    das sieht mir stark danach aus, als ob du runterlädst und währenddessen das passiert(durch DownloadFileAsync, wird hier nicht gewartet) versuchst du die Dateien zu löschen? Evtl. kommt ja auch eine Fehlermeldung?
    Process.Start("Appliction.StartupPath & "\anw.exe")
    das erste Anführungszeichen ist zu viel ;)
    Nein. Das mit dem DELFILES ist für die Textdateien zuständig und die anw.exe, ich lade die Datei ja nach anwn.exe (ist ein n mehr drin).
    Nur mein Problem: Er lädt die Datei herunter, führt DELFILES() nicht aus und sagt mir auch noch es sei kein update verfügbar?
    Das ist mein aktuelles Problem. Die Grundstruktur wird noch etwas umgemodelt, dann ist es auch übersichtlicher.
    Nur: Ich ahbe zwei Zahlen, die eine 5 die andre 4. Die 5 ist größer (siehe erster Post) und deswegen sollte ja kommen "Update verfügbar" (oder was auch immer in die MsgBox am Schluss kommen soll).
    Aber das Gegenteil ist der Fall.

    Ich werde jetzt nochmal überarbeiten, und schauen ob ich das Problem gelöst bekomme?

    Lord Maul
    ...

    Ich downloade 2 Textfiles, warte bis fertig gedownloadet und lese diese dann aus (JA, IST Integer)
    Das geht schon, hab ich in einem anderen Programm auch gemacht.

    Wenn die 2 Textfiles fertig sind rufe ich CheckApp() Auf, in der das anhand der If Abfrage überprüft wird.

    //Edit: Habe das Problem gelöst, nehme keinen Web Client mehr, sondern benutze jetzt My.Computer.Network.DownloadFile("blabla", "\blabla)

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