Update installation?

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Triple-Axe.

    Update installation?

    Hey Leute!

    Ich möchte gern für mein Programm ein Updater erstellen :)

    Idee:
    User startet Browser
    Ein neues Update ist verfpgbar und wurde entdeckt (automatisch)
    Update installiert sich automatisch - Hier liegt das Problem -

    Ich möchte gern das der Browser automatisch wie bei Firefox den Download startet & das Update installiert (also einfach die neue Browser.exe in dej ordner einfügt)
    Wenn dies geschehen ist, soll Sich die veraltete Version schließen und die neue soll geöffnet werden

    Wie??


    Liebe Grüße,
    Dean
    das thema updaten gibt es ja schon einige male
    was du dir wegen dem neustarten mal ansehen kannst :

    VB.NET-Quellcode

    1. Application.Restart()


    so wie teste ich auf updates ( kann gerne jemand verbessern )

    im prinzip legst du auf dem server eine version.txt ab worin eine zahl steht z.b. 15691591 das ist die aktuellste version
    .....
    so liest du die online datei ein :

    VB.NET-Quellcode

    1. Imports System.Net
    2. Public Class Form1
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. Dim Web As New WebClient
    5. Dim checkupdate As String = "" 'hier drin steht die versionsnummer aus updatetest.txt
    6. checkupdate = Web.DownloadString("http://81-89-103-203.blue.kundencontroller.de/updatetest/updatetest.txt")
    7. End Sub
    8. End Class


    uns so checkst du gegen auf die die installiert ist ( mit obrigem code eingebaut schon )

    VB.NET-Quellcode

    1. Imports System.Net
    2. Public Class Form1
    3. Public Version As String = "15691590" 'diese zeile MUSS in der neuen exe den wert enthalten der in der
    4. 'updatetest.txt steht damit du wenn du die nächste updatetest.txt erstellst + die nächste exe wieder
    5. 'testen kannst
    6. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    7. Dim Web As New WebClient
    8. Dim checkupdate As String = "" 'hier drin steht die versionsnummer aus updatetest.txt
    9. Dim updatedatei_adresse As String = "http://81-89-103-203.blue.kundencontroller.de/updatetest/updatetest.txt"
    10. If IsURLAvail(updatedatei_adresse) = True Then
    11. 'checkupdate = Web.DownloadString(updatedatei_adresse) 'speichere die in der variable
    12. checkupdate = Web.DownloadString(updatedatei_adresse) 'speichere die in der variable
    13. If checkupdate=Me.Version Then 'teste ob variable = Public Version As String = "15691590" ( von oben )
    14. Label1.ForeColor = Color.Red
    15. Label1.Text = "kein update vorhanden"
    16. Web.Dispose()
    17. Else
    18. Label1.ForeColor = Color.Green
    19. Label1.Text = "Neue Version verfügbar" & vbCrLf & checkupdate
    20. Web.Dispose()
    21. End If
    22. Else
    23. MsgBox("server offline")
    24. End If
    25. End Sub
    26. Public Function IsURLAvail(ByVal sURL As String) As Boolean
    27. ' Prüft, ob die angegebene URL erreichbar ist
    28. Try
    29. Dim oRequest As Net.HttpWebRequest = Net.HttpWebRequest.Create(sURL)
    30. ' Default-Proxy Einstellungen
    31. With oRequest
    32. .Proxy = System.Net.WebRequest.DefaultWebProxy
    33. .Credentials = System.Net.CredentialCache.DefaultCredentials
    34. End With
    35. Dim oResponse As Net.WebResponse = oRequest.GetResponse
    36. oResponse.Close()
    37. ' URL ist erreichbar
    38. Return True
    39. Catch ex As Exception
    40. ' URL ist nicht erreichbar
    41. Return False
    42. End Try
    43. End Function
    44. End Class


    'die obere checkupdate zeile (zeile 20) gibt dir kein update aus (15691590)
    'die untere checkupdate zeile (zeile 21) sagt es gibt ein update (999999999999999999)

    je nachdem welche du auskommentierst mit '

    kansnt ja mal auf 81-89-103-203.blue.kundencontroller.de/updatetest schauen was in den dateien steht

    tipp : schreib in die updatetest.txt nix groß rein nur die zahl 15691590 denn außer dir bringt die eh keinem groß was

    mit dem code kannst du auch die anwendung sperren wenn ein user das update ablehnt und eins vorhanden ist
    indem du ein panel über der form plazierst das alles blockiert und die update meldung anzeigt :D

    bitte beachten :

    wenn du eine neue exe erstellst IMMER die

    VB.NET-Quellcode

    1. Public Version As String = "15691590"
    um 1 oder 2 oder 10 oder was auch immer hochzählen und in der neuen exe speichern. diese zahl dann auch in die updatetest.txt schreiben und der client holt sich die neue exe wieder :D

    [line]edit1[/line]
    mit hilfe dieses tips : vbarchiv.net/tipps/tipp_1673-p…l-erreichbar-ist-net.html

    nun auch mit onlinecheck ob die datei erreichbar ist

    [line]edit2 (bug)[/line]
    zeile 30 alt :

    VB.NET-Quellcode

    1. If checkupdate.contains(Me.Version) Then 'teste ob variable = Public Version As String = "15691590" ( von oben )

    zeile 30 neu :

    VB.NET-Quellcode

    1. If checkupdate=Me.Version Then 'teste ob variable = Public Version As String = "15691590" ( von oben )

    problem : es wird nur auf vorhandensein der zeichen geprüft d.h. es kann passieren das die version 12345 die alte ist und die 123456 die neue dann
    prüft er : 123456 beinhaltet (12345) was ja nicht korrekt ist :S









    (oben ist der neue code drin )

    Dieser Beitrag wurde bereits 19 mal editiert, zuletzt von „Triple-Axe“ ()

    Hallo Triple-Axe!
    Dankeschön für Deine Müge, allerdings muss ichgestehen das dies nicht genau das ist was ich suche.
    Die Idee mit dem panel allerdings klingt interessant. :D


    Meine Frage nochmal neu gestellt und anders formuliert:
    Ich möchte es gerne so machen, dass der Browser ein neues Update entdeckt, dem User bescheid gibt über das NotifyIcon (Fertig)
    - Ab hier weiß ich nicht weiter -
    Der user soll auf das NotifyIcon klicken, ein Updater meldet sich
    - Hier wirds wichtig -
    Der User klickt auf Download, die neuen Dateien (WETT Browser.exe, Version.dll (Version.dll soll ausgelesen werden, bzw. das "Version" ist = die Version, also beispielsweise: 2.1.0.dll, dieser name soll nun ausgelesen werden vom programm bei der update suche, ist 2.1.0.dll nicht gleich mit xx.xx/version.txt soll halt der updater bescheid geben, bzw. das notifyicon, somit sage ich nicht in der form bescheid, sondern mit dem namen einer .dll welche version er gerade hat.))
    Nun sollen diese dateien mit den alten getauscht werden, die application soll sich neustarten und das programm ist up-to-date

    ich hoffe ich habe nichts vergessen und es ist jetzt besser formuliert


    gruß,
    dean