Updater Funktioniert nicht

  • VB.NET

Es gibt 46 Antworten in diesem Thema. Der letzte Beitrag () ist von vb-profi.

    Updater Funktioniert nicht

    Hallo Com,

    Ich weiß jetzt nicht ob es hier rein gehört aber ein Problem gehört eher zum Programm also einem Spiel,

    Ich habe eine Leitstelle Programmiert und bin nun am Updater, ich habe den Updater als externes Programm geschrieben damit ich nachher alles überschreiben kann.

    Im Debug und wenn ich erstelle und vom Ordner aus Starte funktioniert er wie er soll auch in Verbindung mit der Leitstelle im Ordner.

    Packe ich aber die Dateien also die beiden .exe Dateien mit Inno Setup in eine Setup Datei und installiere das will der Updater weder aus dem Installation Ordner oder aus dem Programm der Leitstelle funktionieren.

    der Updater Startet zwar downloadet mir aber die Datei nicht und zeig mir auch nicht die MB zahl an.

    was mache ich falsch hier der Code vom Updater:

    VB.NET-Quellcode

    1. Imports System.Net
    2. Imports System.ComponentModel
    3. Public Class Form1
    4. Dim i As Integer = "1"
    5. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    6. DownloadFile()
    7. End Sub
    8. Sub DownloadFile()
    9. Dim wb As New System.Net.WebClient()
    10. AddHandler wb.DownloadProgressChanged, AddressOf ProgressChanged
    11. Dim uri As New Uri("http://www.fsprogramming.nebellande-orga.de/download/LeitstelleEifelhausen.exe")
    12. wb.DownloadFileAsync(uri, Application.StartupPath + "\Leitstelle_Eifelhausen_UPDATE.exe")
    13. End Sub
    14. Sub ProgressChanged(sender As Object, e As DownloadProgressChangedEventArgs)
    15. Dim Bytes As Integer = e.BytesReceived
    16. Dim totalbytes As Integer = e.TotalBytesToReceive
    17. Bytes = Bytes / 1024
    18. totalbytes = totalbytes / 1024
    19. Bytes = Bytes / 1024
    20. totalbytes = totalbytes / 1024
    21. Math.Round(Bytes, 2)
    22. Math.Round(totalbytes, 2)
    23. Label4.Text = Bytes & " MB/" & totalbytes & " MB"
    24. ProgressBar1.Value = e.ProgressPercentage
    25. Label3.Text = ProgressBar1.Value & " %"
    26. If e.ProgressPercentage = "100" Then
    27. While i = "1"
    28. i = "0"
    29. My.Computer.FileSystem.DeleteFile(Application.StartupPath & "\Leitstelle Eifelhausen.exe")
    30. Application.DoEvents()
    31. My.Computer.FileSystem.RenameFile(Application.StartupPath & "\Leitstelle_Eifelhausen_UPDATE.exe", "Leitstelle Eifelhausen.exe")
    32. Shell(Application.StartupPath + "\Leitstelle Eifelhausen.exe")
    33. Application.Exit()
    34. End While
    35. End If
    36. End Sub
    37. End Class

    Mit freundlichen Grüßen
    Dominik

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „[TNL]Dominik“ ()

    ja ich habe jetzt Option Strict on und der Code bei mir ist raus ich update grade nich oben. wenn ich das in Den Download Complete Ereignes setze sagt er der Download sei fertig und startet aber die datei die ist aber immer noch die Alte und er will dann wieder ein Update machen und das geht dann in einer schleife durch
    Edit://

    VB.NET-Quellcode

    1. Imports System.Net
    2. Imports System.ComponentModel
    3. Public Class Form1
    4. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    5. DownloadFile()
    6. End Sub
    7. Sub DownloadFile()
    8. Dim wb As New System.Net.WebClient()
    9. AddHandler wb.DownloadProgressChanged, AddressOf ProgressChanged
    10. AddHandler wb.DownloadDataCompleted, AddressOf DownloadComplete
    11. Dim uri As New Uri("http://www.fsprogramming.nebellande-orga.de/download/LeitstelleEifelhausen.exe")
    12. wb.DownloadFileAsync(uri, Application.StartupPath + "\Leitstelle_Eifelhausen_UPDATE.exe")
    13. End Sub
    14. Sub ProgressChanged(sender As Object, e As DownloadProgressChangedEventArgs)
    15. Dim Bytes As Integer = e.BytesReceived
    16. Dim totalbytes As Integer = e.TotalBytesToReceive
    17. Bytes = Bytes / 1024
    18. totalbytes = totalbytes / 1024
    19. Bytes = Bytes / 1024
    20. totalbytes = totalbytes / 1024
    21. Math.Round(Bytes, 2)
    22. Math.Round(totalbytes, 2)
    23. Label4.Text = Bytes & " MB/" & totalbytes & " MB"
    24. ProgressBar1.Value = e.ProgressPercentage
    25. Label3.Text = ProgressBar1.Value & " %"
    26. End Sub
    27. Sub DownloadComplete(sender As Object, e As DownloadDataCompletedEventArgs)
    28. My.Computer.FileSystem.DeleteFile(Application.StartupPath & "\Leitstelle Eifelhausen.exe")
    29. My.Computer.FileSystem.RenameFile(Application.StartupPath & "\Leitstelle_Eifelhausen_UPDATE.exe", "Leitstelle Eifelhausen.exe")
    30. Application.DoEvents()
    31. Shell(Application.StartupPath + "\Leitstelle Eifelhausen.exe")
    32. Application.Exit()
    33. End Sub
    34. End Class
    Der Code sieht schon mal vielversprechend aus. Ich kann auf den ersten Blick keinen Fehler erkennen, außer dass du das Ergebnis von Round nicht wieder den Variablen zuweist, das sollte aber keinen Einfluss auf den Download haben. Verwende auch statt Shell Process.Start.