UpdateLib

    • Beta

    Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von ThuCommix.

      Hey Leute, da doch noch einige nicht wissen, wie man das eigene Programm Updated, habe ich mal für die jenigen eine Lib geschrieben.


      Zur Anwendung:


      VB.NET-Quellcode

      1. Imports UpdateLib.UpdateLib


      Als erstes müsst ihr die Lib importieren


      UpdateVersion

      VB.NET-Quellcode

      1. Dim isNewUpdate as Boolean
      2. isNewUpdate = UpdateLib.UpdateLib.isUpdateAvailable("http://myhost.de/updateversion.txt", "0850")


      isNewUpdate liefert euch einen Boolean zurück, der angibt, ob neue Updates verfügbar sind.. Die Version in der TxtDatei so vorliegen: bsp. 0850)

      Nun können alternativ Updateinformationen ausgegeben werden

      VB.NET-Quellcode

      1. Dim Updateinfo As String
      2. Updateinfo = UpdateLib.UpdateLib.GetUpdateInformation("http://myhost.de/updateinfo.txt")


      Updateinfo liefert den gesamten Inhalt der updateinfo.txt zurück.

      Nun könnt ihr das Update einleiten:

      VB.NET-Quellcode

      1. UpdateLib.UpdateLib.DownloadUpdate("http://myhost.de/myapp.exe", "C:\myapp.exe", Application.StartupPath & "\myapp.exe")


      Hierbei ist es wichtig, das ApplicationPath, mit euren Programmnamen + .exe angegeben wird.
      Euer Hauptprogramm wird nun durch Io.Movefile verschoben sodass, das neue Update heruntergeladen werden kann. D.h ihr braucht kein extra Update Programm
      Beim Start des Programms solltet ihr aber die verschobene Datei löschen

      VB.NET-Quellcode

      1. Try
      2. Io.file.delete(Aplication.startuppath & \myapp.backup)
      3. Catch ex as Exception
      4. End Try



      Um den Status abzufragen macht ihr Folgendes:

      VB.NET-Quellcode

      1. Dim CurrentBytes As Integer = UpdateLib.UpdateLib.BytesNow 'Gedownloadede Bytes
      2. Dim MaxBytes As Integer = UpdateLib.UpdateLib.MaxBytes 'Downloadgröße
      3. Dim ProzentuallerAnteil As String = UpdateLib.UpdateLib.Percentage '%


      BytesNow sowie MaxBytes liefern KB wieder, ich weiß der Name war unglücklich gewählt.


      Um herauszufinden ob der Download abgeschlossen wurde, könnt ihr MaxBytes und BytesNow abgleichen oder:

      VB.NET-Quellcode

      1. Dim Downloadfertig As Boolean = UpdateLib.UpdateLib.isReady


      Wenn der Download abgeschlossen wurde, wird True zurück geliefert. Danach müsst ihr selber fortfahren



      Entwickelt mit: VS Express 2008
      Framework: 2.0
      Dateigröße: 13KB



      Darf gerne einkompiliert werden, ein Verweis auf mich ist nicht nötig
      Dateien
      • UpdateLib.zip

        (5,24 kB, 122 mal heruntergeladen, zuletzt: )
      also...das sieht sehr nett aus, aber ist es nicht möglich Events einzubauen?
      à la UpdateLib.DownloadUpdateComplete und so?
      wär gut wenn du das einbauen würdest, denn dann würde.ich das vllt. auch bei meinen Programmen benutzen
      Ich weiß nicht das ist meine erste Dll, aber ich werds versuchen, momentan kannst du ja mit einen Timer abfragen, ich weiß nicht hübsch aber ich kümmer mich drum danke!

      / der Webclient ist als Puplic Shared deklariert, deshalb kannst du einfach bei dir Addhandler hinzufügen, du musst aber vorher den existierenten mit RemoveHandler beseitigen sonst wird deiner nnicht ausgelöst

      //Edit 2


      so AliveDevil :D


      VB.NET-Quellcode

      1. Imports UpdateLib.UpdateLib
      2. Public Class Form1
      3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      4. AddHandler UpdateLib.UpdateLib.UpdateLoader.DownloadFileCompleted, AddressOf mySub
      5. AddHandler UpdateLib.UpdateLib.UpdateLoader.DownloadProgressChanged, AddressOf TestSub
      6. UpdateLib.UpdateLib.DownloadUpdate("http://crypticforce.square7.ch/update/yd_update/Cryptic YD.exe", Application.StartupPath & "\test.exe", Application.StartupPath & "\updatelibtest.exe")
      7. End Sub
      8. Private Sub mySub(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
      9. MessageBox.Show("Fertig")
      10. End Sub
      11. Private Sub TestSub(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs)
      12. Me.Text = e.ProgressPercentage & "%"
      13. End Sub
      14. End Class


      Habs getestet und es funzt :) Aber alternativ kannste ja auch och

      VB.NET-Quellcode

      1. While not UpdateLib.UpdateLib.isReady = true
      2. Application.DoEvents()
      3. Loop

      Grüße

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ThuCommix“ ()