Brauche hilfe beim programmieren von einem AutoUpdater.

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von KlyX.

    Brauche hilfe beim programmieren von einem AutoUpdater.

    Hey com

    ich brauche dringend hilfe bei meinem updater für ein spiel.
    ich will so ein updater machen wie bei z.b. World of Tanks.
    das der nach updates sucht dann wen welche da sind runterläd und gleich da hin installiert wo es hin soll also in das game verzeichnis.
    ich möchte eine progressbar haben und ein feld wo dann steht was bei dem update neu ist.
    ich habe einen schon gemacht aber irgend wie geht das alles nicht ich hinterlege mal ein bild

    und den code auch.

    villeicht gibt es ja schon ein thema dazu oder ein tut wäre gut wenn ihr mir dann das zeigt.
    (ich bin noch ein "anfänger" darin )
    habe zwar schon ein bissel programmiert und so aber nicht sowas



    VB.NET-Quellcode

    1. Imports System.Net
    2. Public Class Form1
    3. Private WithEvents wc1 As WebClient
    4. Private WithEvents wc2 As WebClient
    5. Dim lbl_progress As Object
    6. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    7. Button1.Text = "Suche..."
    8. Button1.Enabled = False
    9. update()
    10. End Sub
    11. Sub update()
    12. wc1 = New WebClient
    13. If wc1.DownloadString("") <> "1.0" Then
    14. MsgBox("Es werden Updates heruntergeladen", MsgBoxStyle.Information, "Update-Ergebnis")
    15. download("")
    16. Else
    17. MsgBox("keine updates vorhanden", MsgBoxStyle.Information, "update-Ergebnis")
    18. Button1.Enabled = True
    19. Button1.Text = "Nach Updates suchen"
    20. End If
    21. End Sub
    22. Sub download(ByVal url As String)
    23. wc2 = New WebClient
    24. wc2.DownloadFileAsync(New Uri(url), "My.Computer.Network.DownloadFile(path, Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "/" & version & "" & "version.txt")
    25. End Sub
    26. Private Sub wc2_donloadcompleted(ByVal sender As Object, ByVal w As System.ComponentModel.AsyncCompletedEventArgs) Handles wc2.DownloadFileCompleted
    27. MsgBox("Download abgeschlossen", MsgBoxStyle.Information, "Download")
    28. Button1.Enabled = True
    29. Button1.Text = "nach Updates suchen"
    30. pgb_progress.Visible = False
    31. lbl_progress.Visible = False
    32. End Sub
    33. Private Sub wc2_Downloadchanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles wc2.DownloadProgressChanged
    34. pgb_progress.Visible = True
    35. lbl_progress.Visible = True
    36. pgb_progress.Value = e.ProgressPercentage
    37. lbl_prgress.Text = e.ProgressPercentage.ToString & "%"
    38. End Sub
    39. Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
    40. End
    41. End Sub
    42. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    43. Process.Start("http://www.google.de")
    44. End Sub
    45. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    46. Dim Programm As Long
    47. Programm = Shell("notepad.exe", vbNormalFocus)
    48. End
    49. End Sub
    50. End Class




    das habe ich schon gemacht aber es soll ja automatisch instalieren und wenn noch kein game vorhanden ist das dann ausgesucht wird wohin das alles runtergeladen werden soll.


    das rot umrandete ist wie es aussehen soll mit progressbar und % anzeige dadrüber soll dann stehen was neu ist im update.

    i.imagebanana.com/img/w6tcr3fb/asdd.png




    Viele dank für eure hilfe.
    bei weiter benötigten infos einfach schreiben. :D
    lg vbcji
    Salü

    Das sieht mir nach Copy-Paste Code aus teilweise. Vor allem was den Code des WebClient-Code anbelangt.
    Dagegen ist zwar nichts auszusetzen (ist ja immer mehr oder weniger der gleiche Aufruf in dem Fall).

    Grundsätzlich muss ein Autoupdater folgendes machen:
    - Die laufende Programmversion auslesen
    Der Updater sollte meines Erachtens immer eine eigenen Exe-Datei sein. Die Programmversion hast du dann von mir aus in einer text-Datei
    - Die aktuellste Programmversion auslesen
    Diese steht irgendwo online zur Verfügung, in einem Textfile oder in einer Datenbank
    - Die Version wird geprüft. Wenn die Onlineversion neuer ist, dann kann diese geladen werden
    - Die neuen Daten werden heruntergeladen
    Am besten stellst du die Files als ZIP-File bereit, dann musst du nur einen Download machen
    - Das ZIP-File in einen temporären Ordner kopieren
    - Die Inhalte in den gewählten Spielordner kopieren
    - Temp-Ordner löschen
    - Updater beenden

    Ich habe es so gehandhabt, dass ich den Updatecheck bereits in meinem Hauptprogrammhabe. Das erspart mir ein lokales Versionsfile und ermöglicht gleichzeitig ein Update des Updaters (der Updater wird dann wenn nötig vom Hauptprogramm aus aktualisiert). Die Daten sind direkt im Programm drin.
    Wenn eine neue Version vorhanden ist, startet sich mein Updater und der bekommt die aktuelle Programmversion übergeben. Nach dem Update startet der Updater das Hauptprogramm wieder, bevor er sich selbst beendet.

    Wie man das Ganze macht, da findest du - wie schon erwähnt - schon etliche Threads.
    Verwende einfach mal die Forensuche =)

    KlyX
    Chris' Weblog - Mein Blog rund um Vieles :D