Update mit optionaler Benachrichtigung

    • VB.NET

    Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Timocop.

      Update mit optionaler Benachrichtigung

      Hallo.

      Hier mal ein kleiner Code um ein Update durchzuführen.

      Effekt: Update einer Forms-Anwendung.
      Die Controls werden hierbei erst eingeblendet, wenn die aktuellste Version des Programms vorliegt.

      Benötigt:

      -Eine .ini/.txt Datei auf einem Webspace.

      VB.NET-Quellcode

      1. ' Private WebspaceBasicAddr As String = "http://euerserver.funpic.de/EuerProgramm/" Global definieren
      2. Private Sub CheckUpdate()
      3. Dim CurrD As String = String.Empty
      4. Dim SevVers As String = String.Empty
      5. Try
      6. CurrD = New WebClient().DownloadString(String.Concat(WebspaceBasicAddr, ".Vers.ini"))
      7. SevVers = Regex.Match(CurrD, "(v[^|]+)").Groups(1).Value
      8. Catch
      9. End Try
      10. Dim State As Tuple(Of Boolean, String) = Tuple.Create(True, String.Empty)
      11. If Not Regex.IsMatch(CurrD, "(v[^|]+)") Then State = Tuple.Create(False, "No connection to the update server.")
      12. If Not "AKTUELLEVERSION" = SevVers Then State = Tuple.Create(False, SevVers)
      13. If State.Item1 Then Me.Controls.OfType(Of Control).ToList.ForEach(Sub(x) x.Visible = True)
      14. If Regex.IsMatch(CurrD, "v[^|]+\|1|\|") Then MessageBox.Show(Regex.Match(CurrD, "v[^|]+\|1\|([^\n]+)").Groups(1).Value, "Notification of the developer", MessageBoxButtons.OK, MessageBoxIcon.Information)
      15. If Regex.IsMatch(State.Item2, "(v[^|]+)") Then
      16. If MessageBox.Show("There is an update available! Would you like to download EUERPROGRAMM " & State.Item2 & " ? ", "Update available.", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.No Then Environment.Exit(1)
      17. DownloadUpdate()
      18. End If
      19. If State.Item2.Contains("No connection") Then MessageBox.Show("There is no connection to the updateserver.", "No connection.", MessageBoxButtons.OK, MessageBoxIcon.Information)
      20. End Sub
      21. Private Sub DownloadUpdate()
      22. Dim CurrVersion As String = String.Empty
      23. Try
      24. CurrVersion = New WebClient().DownloadString(String.Concat(WebspaceBasicAddr, ".Vers.ini"))
      25. CurrVersion = Regex.Match(CurrVersion, "(v[^|]+)").Groups(1).Value
      26. Dim Pat As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "EuerProgramm" & CurrVersion & ".rar")
      27. Dim Url As String = String.Concat(WebspaceBasicAddr, "EuerProgramm" & CurrVersion & ".rar")
      28. File.Delete(Pat)
      29. Dim Client As New Net.WebClient
      30. Client.DownloadFile(Url, Pat)
      31. If File.Exists(Pat) Then
      32. MessageBox.Show("EuerProgramm " & CurrVersion & " successfully downloaded. √", "Update successful.", MessageBoxButtons.OK, MessageBoxIcon.Information)
      33. Environment.Exit(1)
      34. Else
      35. MessageBox.Show("EuerProgramm " & CurrVersion & " was not downloaded.", "Update failed. The bot is currently disabled.", MessageBoxButtons.OK, MessageBoxIcon.Error)
      36. End If
      37. Catch
      38. MessageBox.Show("EuerProgramm update failed because of a networkerror. The bot is currently disabled.", "Update failed.", MessageBoxButtons.OK, MessageBoxIcon.Error)
      39. End Try
      40. End Sub



      -Auf dem Webspace muss eine Datei Namens .Vers.ini liegen
      Der Punkt vor dem Vers ist , damit die Datei auf dem Webspace unsichtbar ist. Sie muss also wirklich .Vers.ini heißen.

      In dieser Datei steht z.B Folgendes:

      v1.6.7B|1|Der Entwickler gibt sein Bestes

      Vorne schreibt ihr die aktuelle Version.
      Dann folgt ein |
      Dann kommt eine 0 (Notification ausgeschaltet) oder eine 1(Notification angeschaltet)
      Dann kommt wieder ein | und optional der Notificationtext

      Wenn 0 steht kann auch ein Notificationtext da stehen, der wird nicht angezeigt werden.


      -Bei EuerProgramm tragt ihr den Namen eures Programmes ein
      -Bei AKTUELLEVERSION muss die aktuelle Version (die das Programm hat wo ihr den Code nutzt) rein

      Mit diesem Code muss euer Programm so auf dem Webspace liegen(beispiel:
      HelloWorldv1.3.5.Rar

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

      Hmm...

      Ich würde unbedingt von sowas abraten. UpdateSystem.NET ist das beste, was ich da raten kann. Wenn deine Update-Pakete nämlich nicht signiert werden, dann kann der Client stattdessen nen Virus auf den PC bekommen. Zudem ist es einfacher und schöner aufgebaut. Die Sicherheit steht immer an erster Stelle...
      So toll es auch ist, afaik ist diese Lösung aber auf Dauer nicht sicher. Also bitte nicht!!! Am Ende wundert sich sonst der Nutzer irgendwann, warum seine Controls nicht angezeigt werden (in diesem Beispiel) und dann sein PC verrückt spielt, wenn er sich Malware einfängt!
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

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

      Jo das ist richtig. Es gibt aber afaik auch böse Benutzer, die sich das zum Ziel setzen ;)
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      FunPic AGB: 5. Unerwünschte Inhalte
      Den Speicherplatz als Datenablage im Sinne der alleinigen Speicherung und/oder Verbreitung von Daten ohne konkretem Zusammenhang zu einer bei Funpic.de AG vorhandenen Webseite zu verwenden, ist nicht gestattet, als auch die kommerzielle oder entgeltliche Weitergabe des Angebots.


      Just say'n