Updater

  • VB.NET

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von Gather.

    Hey ich will ein Update machen / haben habe auch ganz google etc duch aber finde keinen guten Update und wenn dann geht er nicht

    ich will wenn sich mein Programm öffnet das er auf Updates überprüft wenn kein update vorhanden ist soll einfach das Programm starten und ich kann alles machen wenn ein update vorhanden ist kommt eine Massage es ist ein neues Update Vorhanden Wollen sie es runter laden Bei Nein öffnet sich wieder ganz normal das Programm bei ja kommt wo ich das update speichern will und dann eine neue Form mit Progressbar wie weit der download ist wenn alles fertig ist soll er das neue Programm(das Update) starten

    mfg
    Nepster
    Das klingt gut. Und jetzt? Willst du das hier dokumentieren? Im Ernst: Wenn du eine Fertiglösung suchst, mach' das im Marktplatz.

    Und verwende mal Punkt und Komma.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Ich würde ja auch den code nehmen


    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://nepstergaming.bplaced.net/update.exe")
    12. wb.DownloadFileAsync(uri, Application.StartupPath + "\update_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 & "\update.exe")
    29. My.Computer.FileSystem.RenameFile(Application.StartupPath & "\update_UPDATE.exe", "update.exe")
    30. Application.DoEvents()
    31. Shell(Application.StartupPath + "\update.exe")
    32. Application.Exit()
    33. End Sub
    34. End Class


    Nur wenn ich das programm öffne downloadet er alles sofort und ich weiß nicht wie ich das mit dem verions check mache und er zeigt immer 0 MB an

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Nepster“ ()

    Aha. Gegoogelt?
    Glaub ich dir net, ich finde auf Anhieb als 1. Ergebnis was passendes.
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Oh mein gott.
    Die leichten Varianten:

    Updatesystem.net (Selbst googeln)
    Oder hier aus dem Forum:
    [Release] smartUpdate - Dein Intelligentes UpdateSystem 1.2.6.0

    Edit://
    Desweiteren... Googel benutzt:
    vb.net auto updater
    About 1,170,000 results (0.25 seconds)

    Oder:
    vb.net AutoUpdate Tutorial
    About 61,000 results (0.24 seconds
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Oder du machst es so:
    Du downloadest per Webclient nen String von deinem Server, wo eine Zahl drin steht. (Wichtig: wb.Proxy = Nothing, sonst hängt es kurz). Außerdem ist in deinem Programm ne Variable wo deine Version drin steht, zB. 2. Wenn jetzt der String vom Webclient > als deine Variable, schickst du eine Messagebox mit YesNo. Wenn die Antwort Yes ist, dann downloadest du die neue Version, wenn nicht, passiert nichts.
    Mfg
    Vincent

    Mein Updater sieht so aus:

    VB.NET-Quellcode

    1. Imports System.Net
    2. Public Class Form1


    VB.NET-Quellcode

    1. If CheckBox1.Checked = True Then
    2. My.Computer.Network.DownloadFile("https://dl.dropboxusercontent.com/s/2izp5rr1bv3u25r/NewVersion.txt", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Version.ini", "", "", False, 60000, True) 'Ladet von einem FTP-Server die Datei herunter (am besten ist DropBox, einfacher gehts einfach nicht!)
    3. Dim MyVersion As Integer = CInt(VersionLabel.Text) 'In der Form der Label, wo deine Version drin steht
    4. Dim ServerVersion As Integer = My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Version.ini") 'Die heruntergeladene Datei mit der neusten Version
    5. If ServerVersion = MyVersion Then 'Wenn Version gleich ist
    6. CheckBox1.Checked = False
    7. End If
    8. If ServerVersion < MyVersion Then 'Wenn eigene Version größer ist als von der heruntergeladene Datei
    9. End If
    10. If ServerVersion < MyVersion Then 'Wenn die heruntergeladene Versions-Datei größer ist als vom Programm selber
    11. End If
    12. End If

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Broty“ ()

    Da hätte jedoch UpdateSystem.Net einen großen Vorteil:
    Es bietet viel mehr Möglichkeiten.
    z.B. Automatisch Registryeinträge schreiben, alte Daten löschen, daten erstellen.

    Desweiteren bietet es eine sehr gute Benutzeroberfläche zum Verwalten der Updates.
    Hier der Link:
    updatesystem.net/
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Nimm bitte allein schon aus Sicherheitsgründen updatesystem.net.

    Updates vom US.net sind signiert! Das heißt sie können nicht manipuliert werden, ohne deinen Schlüssel dazu zu kennen.

    Stell dir vor, du bist am Flughafen im gleichen Hotspot wie ich. Ich kann einfach die Verbindung verändern und dir statt der neuen EXE einen Virus schicken.
    Deine Software würde das ausführen.

    Gruß,
    Manawyrm

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

    Habe es jetzt anders hin bekommen so

    If WebBrowser1.DocumentTitle = "neu" Then
    Label1.Text = "Updates verfügbar! Download Now"
    Else
    Label1.Text = "Keine Updates verfügbar! Weiter zum programm"
    End If

    nur ich will alles in einer Progress bar packen

    also sieht mein code jetzt so aus


    VB.NET-Quellcode

    1. Public Class start
    2. Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. For fadein = 0.0 To 1.1 Step 0.1
    4. Me.Opacity = fadein
    5. Me.Refresh()
    6. Threading.Thread.Sleep(100)
    7. Next
    8. Timer1.Start()
    9. End Sub
    10. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    11. Label1.Text = "Nach updates prüfen..."
    12. ProgressBar1.Value += 1
    13. If ProgressBar1.Value = 100 Then
    14. Timer1.Stop()
    15. If WebBrowser1.DocumentTitle = "neu" Then
    16. Label1.Text = "Updates verfügbar! Download Now"
    17. Else
    18. Label1.Text = "Keine Updates verfügbar! Weiter zum programm"
    19. End If
    20. End If
    21. End Sub
    22. Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
    23. If Label1.Text = "Updates verfügbar! Download Now" Then
    24. Form2.Show()
    25. End If
    26. If Label1.Text = "Keine Updates verfügbar! Weiter zum programm" Then Form3.Show()
    27. End Sub
    28. End Class



    aber es geht nicht wie ich es will also es soll so sein er auf Updates über prüft die progressbar ist nur zu schönheit wenn ein update da ist soll ein Ja Nein MSG box auf gehen wenn nein dann geht er zu Form 3 wenn ja geht er zu Form 2 und bei ja und nein soll sich die form start Hidden
    Mal eine Frage ignorierst du mich und Manawyrm?
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Manawyrm schrieb:

    Nimm bitte allein schon aus Sicherheitsgründen updatesystem.net.

    Updates vom US.net sind signiert! Das heißt sie können nicht manipuliert werden, ohne deinen Schlüssel dazu zu kennen.

    Stell dir vor, du bist am Flughafen im gleichen Hotspot wie ich. Ich kann einfach die Verbindung verändern und dir statt der neuen EXE einen Virus schicken.
    Deine Software würde das ausführen.

    Gruß,
    Tobias

    Da hätte jedoch UpdateSystem.Net einen großen Vorteil:
    Es bietet viel mehr Möglichkeiten.
    z.B. Automatisch Registryeinträge schreiben, alte Daten löschen, daten erstellen.

    Desweiteren bietet es eine sehr gute Benutzeroberfläche zum Verwalten der Updates.
    Hier der Link:
    updatesystem.net/


    Das sagt eigentlich alles aus.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    OK habe es jetzt runtergeaden was muss ich jetzt machen das ich es so wie ich es hier haben will hinbekomme


    Nepster schrieb:

    Habe es jetzt anders hin bekommen so

    If WebBrowser1.DocumentTitle = "neu" Then
    Label1.Text = "Updates verfügbar! Download Now"
    Else
    Label1.Text = "Keine Updates verfügbar! Weiter zum programm"
    End If

    nur ich will alles in einer Progress bar packen

    also sieht mein code jetzt so aus


    VB.NET-Quellcode

    1. Public Class start
    2. Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. For fadein = 0.0 To 1.1 Step 0.1
    4. Me.Opacity = fadein
    5. Me.Refresh()
    6. Threading.Thread.Sleep(100)
    7. Next
    8. Timer1.Start()
    9. End Sub
    10. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    11. Label1.Text = "Nach updates prüfen..."
    12. ProgressBar1.Value += 1
    13. If ProgressBar1.Value = 100 Then
    14. Timer1.Stop()
    15. If WebBrowser1.DocumentTitle = "neu" Then
    16. Label1.Text = "Updates verfügbar! Download Now"
    17. Else
    18. Label1.Text = "Keine Updates verfügbar! Weiter zum programm"
    19. End If
    20. End If
    21. End Sub
    22. Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
    23. If Label1.Text = "Updates verfügbar! Download Now" Then
    24. Form2.Show()
    25. End If
    26. If Label1.Text = "Keine Updates verfügbar! Weiter zum programm" Then Form3.Show()
    27. End Sub
    28. End Class



    aber es geht nicht wie ich es will also es soll so sein er auf Updates über prüft die progressbar ist nur zu schönheit wenn ein update da ist soll ein Ja Nein MSG box auf gehen wenn nein dann geht er zu Form 3 wenn ja geht er zu Form 2 und bei ja und nein soll sich die form start Hidden

    Nepster schrieb:

    Habe es jetzt anders hin bekommen so

    If WebBrowser1.DocumentTitle = "neu" Then
    Label1.Text = "Updates verfügbar! Download Now"
    Else
    Label1.Text = "Keine Updates verfügbar! Weiter zum programm"
    End If

    nur ich will alles in einer Progress bar packen

    also sieht mein code jetzt so aus


    VB.NET-Quellcode

    1. Public Class start
    2. Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. For fadein = 0.0 To 1.1 Step 0.1
    4. Me.Opacity = fadein
    5. Me.Refresh()
    6. Threading.Thread.Sleep(100)
    7. Next
    8. Timer1.Start()
    9. End Sub
    10. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    11. Label1.Text = "Nach updates prüfen..."
    12. ProgressBar1.Value += 1
    13. If ProgressBar1.Value = 100 Then
    14. Timer1.Stop()
    15. If WebBrowser1.DocumentTitle = "neu" Then
    16. Label1.Text = "Updates verfügbar! Download Now"
    17. Else
    18. Label1.Text = "Keine Updates verfügbar! Weiter zum programm"
    19. End If
    20. End If
    21. End Sub
    22. Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
    23. If Label1.Text = "Updates verfügbar! Download Now" Then
    24. Form2.Show()
    25. End If
    26. If Label1.Text = "Keine Updates verfügbar! Weiter zum programm" Then Form3.Show()
    27. End Sub
    28. End Class



    aber es geht nicht wie ich es will also es soll so sein er auf Updates über prüft die progressbar ist nur zu schönheit wenn ein update da ist soll ein Ja Nein MSG box auf gehen wenn nein dann geht er zu Form 3 wenn ja geht er zu Form 2 und bei ja und nein soll sich die form start Hidden

    Nepster schrieb:

    aber es geht nicht wie ich es will also es soll so sein er auf Updates über prüft die progressbar ist nur zu schönheit wenn ein update da ist soll ein Ja Nein MSG box auf gehen wenn nein dann geht er zu Form 3 wenn ja geht er zu Form 2 und bei ja und nein soll sich die form start Hidden
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!