Update via DropBox

    • VB.NET

    Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von thefiloe.

      Update via DropBox

      Hallo,
      zunächst bin ich mir nicht sicher ob es sowas in der Art hier schon gibt.. wenn ja -> Link und ich lösche den Thread :thumbsup:


      Bisher habe ich die Updates immer über einen FTP server laufen lassen, was mir persönlich wegen dem Webspace usw. nicht mehr zusagt. Also
      Dropbox.

      Anlegen des Update-Ordners in DropBox

      Wir brauchen 1 Ordner namens "Update", 1 Textdatei namens "Tool Update.txt" und die eigentliche Aktualisierungsdatei -> .rar Archiv, normaler Ordner oder .exe Anwendung.
      WICHTIG: Ihr solltet alles unter dem Public Ordner speichern um Probleme zu vermeiden.

      Nachdem der Ordner angelegt wurde öffnen wir die Textdatei und schreiben die NEUE Version des kommenden Updates rein. Beispiel: 1.1.0.0 <- Immer 4 Ziffern & Punkte benutzen.
      Wenn noch kein Update existiert muss man eine "Leere" Datei erstellen. Beim Erstrelease empfehle ich daher ein neutrales .rar Archiv "DeinProgramm".rar

      Erklärung der benötigten Dateien

      Tool Update.txt
      - Hier steht die NEUE Version 1.1.0.0 drin.

      Update.rar
      - Hier befindet sich das neue Programm (.rar, .exe, Ordner, .dll usw..).

      lblversion (visual basic)
      - normales Label wo die aktuelle Version steht (1.0.0.0 bei Erstrelease). Bei jedem Update nicht vergessen in VisualBasic zu erneuern..

      Code

      Unter Public Class:

      VB.NET-Quellcode

      1. Dim Web As New Net.WebClient


      VB.NET-Quellcode

      1. Private Sub RunUpdate()
      2. Dim version As Integer = Web.DownloadString("Tool Update.txt Link") 'neue version download
      3. If version > CInt(lblversion.Text) Then 'Beispiel.: neue version: 1.1.0.0, aktuelle version: 1.0.0.0 -> Update wird heruntergeladen
      4. Try
      5. Dim path As String = "Download Link" 'Das .rar archiv oä
      6. My.Computer.Network.DownloadFile(path, Application.StartupPath & "/[Update" & version & "]" & "Update.rar")
      7. Msg("Es wurde ein Update heruntergeladen", MsgBoxStyle.OkOnly, "Update")
      8. Catch ex As Exception
      9. Msg(ex.ToString) 'Fehlermeldung. Kann auch msgBox("Ein Fehler ist aufgetreten") sein.
      10. End Try
      11. End If
      12. End Sub



      Den Code könnt ihr beliebig anpassen. Bsp: Update via Button oder Form_Load. Wäre auch cool wenn ihr euren angepassten Code mal postet :thumbsup:
      Könnt gerne Fragen usw.

      Grüße.

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

      1. Die Schriftfarbe Rot ist den Admin vorbehalten.
      2. Steuerelemente dienen nur zum Darstellen von Werten!!!! Niemals irgendetwas in der Text-Eigenschaft eines Labels speichern und dann ggf. abfragen.
      3. Das ist nicht sonderlich sicher. Lieber UpdateSystem.Net verwenden.


      (Die MsgBox ist übrigens veraltet. Verwende lieber die MessageBox)
      Mfg
      Vincent

      Hmm relativ wenig...
      Wenn du schon eine RaR downloadest, dann solltest du diese auch entpacken und die vorherige Version überschreiben.
      Gruß K4RTOFF3L

      Das Problem zu erkennen ist wichtiger, als die Lösung zu erkennen, denn die genaue Darstellung des Problems führt zur Lösung. - Albert Einstein


      So sieht es aus, wenn man seine Entwicklungsumgebung richtig eingestellt hat.


      -Anstatt Sub lieber Private Sub schreiben
      -Web.Downloadstring -> Die Web Variable ist in deinem Code gar nicht existent.
      -My.Computer.Network.DownloadFile -> Nutze niemals den My.Namespace, außer My.Resources
      -MsgBox ist veraltet, genau wie der Application. Namespace.

      Der Code ist ehrlichgesagt lachhaft. Wieso wird sowas zugelassen? Den Moderator sollte man dafür schlagen.
      Ich bin mal ehrlich.
      Ich find das relativ unnötig, denn es funktioniert genau so wie vom FTP, oder irgendeinem anderem Hoster...

      Mir ist kein wirklicher Unterschied aufgefallen.
      Desweiteren wurde doch sowiesoschon von VincentTB gesagt, das dies wirklich unsicher ist...
      Mfg: Gather
      Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


      Also ich finde es eine gute Sache da ich dropbox immer als USB-Stick alternative für meine projekte nutze,habe schonmal bei google geschaut wie man das machen kann-ähnlich wie das was du hast...naja egal ich nutze es jedenfalls denn es ist schnell praktisch und einfach und ich habe kein bock mich durchs UpdateSystem.Net zu lesen

      VincentTB schrieb:

      2. Steuerelemente dienen nur zum Darstellen von Werten!!!! Niemals irgendetwas in der Text-Eigenschaft eines Labels speichern und dann ggf. abfragen.
      3. Das ist nicht sonderlich sicher. Lieber UpdateSystem.Net verwenden.



      2.Ich wüsste nicht warum man das hier nicht so machen sollte-klar man kann die Version des Projektes auch in den settings oder als Viriable speichern aber als label finde ich nicht schlimm

      3.Wieso sollte es nicht sicher sein?

      Thorstian schrieb:

      2.Ich wüsste nicht warum man das hier nicht so machen sollte-klar man kann die Version des Projektes auch in den settings oder als Viriable speichern aber als label finde ich nicht schlimm

      Es ist das aller aller schlimmste was du machen kannst, Daten in einem Label zu speichern. Das ist völliger missbrauch der Controls. Außerdem ist der Code Strict Off.

      Thorstian schrieb:

      3.Wieso sollte es nicht sicher sein?

      Angenommen jemand verschafft sich Zugang zu deinem Dropbox Account. Der "Hacker" tauscht die Updatedateien gegen Viren aus und du bist dran schuld, weil es dein Update war, der die Computer verseucht hat. Du hast dann mit rechtlichen Konsequenzen zu rechnen, da die Verbreitung von Viren illegal ist (wer hätte das gedacht?), ob bewusst oder unbewusst (verbessert mich, wenn ich falsch liege). Durch das signieren kann das nicht passieren:

      wikipedia schrieb:

      Um eine Nachricht m zu signieren, wird vom Sender auf die Nachricht die RSA-Funktion mit dem eigenen privaten Schlüssel d angewendet. Zum Prüfen wendet der Empfänger auf die Signatur m^d \bmod\ N mit Hilfe des öffentlichen Schlüssels des Senders e die Umkehrfunktion an und vergleicht diese mit der zusätzlich übermittelten unverschlüsselten Nachricht m. Wenn beide übereinstimmen, ist die Signatur gültig und der Empfänger kann sicher sein, dass derjenige, der das Dokument signiert hat, auch den privaten Schlüssel besitzt und dass niemand seit der Signierung das Dokument geändert hat. Es wird also die Integrität und Authentizität garantiert, vorausgesetzt, der private Schlüssel ist wirklich geheim geblieben.

      Quelle: de.wikipedia.org/wiki/RSA-Kryp…Signieren_von_Nachrichten
      Mfg
      Vincent

      Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click

      Dim Web As New Net.WebClient
      Dim version As Integer = Web.DownloadString("https://dl.dropboxusercontent.com/u/39017964/Update/Tool%20Update.txt")
      If version > CInt(lblversion.Text) Then 'Beispiel.: neue version: 1.1.0.0, aktuelle version: 1.0.0.0 -> Update wird heruntergeladen
      Try
      Dim path As String = "https://dl.dropboxusercontent.com/u/39017964/Update/Update.rar" 'Das .rar archiv oä
      My.Computer.Network.DownloadFile(path, Application.StartupPath & "/[Update" & version & "]" & "Update.rar")
      MsgBox("Es wurde ein Update heruntergeladen", MsgBoxStyle.OkOnly, "Update")


      Catch ex As Exception
      MsgBox("Ein Fehler ist aufgetreten") 'Fehlermeldung. Kann auch msgBox("Ein Fehler ist aufgetreten") sein.
      End Try
      ElseIf System.IO.File.Exists("[Update1100]Update.rar") Then
      MsgBox("Sie haben das Update bereits gedownloaded!")
      MsgBox("Suchen Sie einfach nach:" & vbNewLine & "[Update1100]Update.rar")
      ElseIf version = CInt(lblversion.Text) Then
      MsgBox("Sie haben bereits die neuste Version!")
      Else
      End If
      End Sub

      So hab ich ihn verändert.
      @gormfritz
      Es gibt sowieso keine Dropbox Public Ordner mehr. Somit eig. nicht brauchbar.
      Und du rechnest mit Labeln, die du in einen Integer zwängst. Am besten mit Variabeln rechnen.
      Den My. Namespace sollte man - wie oben schon gesagt - vermeiden. Wieso du beim "Version" downloaden einen Webclienten nutzt und dann My. [...] verstehe ich nicht wirklich.
      MsgBox ist auch nicht VB.NET, nutze stattdessen Messagebox.Show.
      Catch ex as Exception. Wieso nicht als Webexception ?

      Wieso das Rad neu erfinden? Es gibt viele gute Updatesysteme. z.B das Updatesystem.NET oder nUpdate vom User @Trade hier.
      Zwar schon etwas länger her, dass hier der letzte Post war aber

      ThomasProj schrieb:

      Somit eig. nicht brauchbar.
      Das Ding ist so oder so nicht brauchbar und wird es auch nie brauchbar sein. Genauso wenig wie einfach was von nem FTP ziehen etc.
      Frage mich so oder so weshalb der Thread nicht gleich gelöscht wurde. @Moderation


      Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.