Updater | mit FTP Server

    • VB.NET

    Es gibt 102 Antworten in diesem Thema. Der letzte Beitrag () ist von razzzer530i.

      Updater | mit FTP Server

      Hi. Hier mal einen Einfachen Updater:

      Man benötigt:

      - einen FTP server
      - eine Form namens Form2
      - ein Label namens Label2
      - eine Datei namens "version.txt" auf dem FTP-Server
      - einen Button namens Button1


      Wer nicht wiess wie man einen FTP Server steuert/erstellt geht zu diesem Tutorial:

      youtube.com/watch?v=CHkzCcHyKvY

      Code: (Beschriebung durch Kommentare)


      VB.NET-Quellcode

      1. Public Class Form2
      2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      3. If My.Computer.FileSystem.FileExists(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\version.txt") Then ' Prüfen ob Datei vorhanden ist
      4. My.Computer.FileSystem.DeleteFile(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\version.txt") ' Wenn ja löschen
      5. End If
      6. My.Computer.Network.DownloadFile("http://mottzi.mo.funpic.de/version.txt", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\version.txt") ' Datei Neu Downloaden - Hier den Link zu der version.txt
      7. Dim Stream As New IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\version.txt") ' Auslesen
      8. Dim z1 As String = Stream.ReadLine ' Inhalt der ersten Zeile wird in "z1" gespeichert
      9. Dim z2 As String = Stream.ReadLine ' Inhalt der zweiten Zeile wird in "z1" gespeichert
      10. Stream.Close()
      11. Dim lblt As Integer = Label2.Text
      12. If lblt < z1 Then' Wenn Label2.Text kleiner ist als "z1" dann
      13. My.Computer.Network.DownloadFile(z2, Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\UpdateV" + z1 + ".exe") ' Neue .Exe in den Dokumenten Ordner laden (Downloadlink in "z2")
      14. MsgBox("Update wurde fertiggestellt. Die neue Exe befindet sich in deinem Dokumenten Ordner.", MsgBoxStyle.Information, "IMail") ' Nachricht wenn download erfollgreich war
      15. Else
      16. MsgBox("Kein Update gefunden", MsgBoxStyle.Information, "IMail") ' Nachricht wenn keine Updates vorhanden sind
      17. End If
      18. Me.Close() ' Schliessen
      19. End Sub
      20. Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      21. Label2.Visible = False
      22. End Sub
      23. End Class


      In dem Label steht immer die aktuelle Version (in einer einstelligen Zahl - bei der neuen Version nicht vergessen die Zahl um 1 zu erhöhen)

      Wenn man jetzt eine neue Version anbieten möchte, muss man in die Version.txt in der ersten Zeile die nächste Zahl reinschreben (zb 2 für version 2) und in der zweiten Zeile den Downloadlink.





      Edit: Man kann das ganze in einen Try.. Cath.. End Try.. Block schreiben, dann stürtzt der Updater nicht ab, wenn ein Fehler auftretet (z.B Keine Internetferbindung elc...) ;)
      "I think Microsoft has abused the Windows brand so much that it has lost its cachet."
      Paul Thurrott

      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „mottzi“ ()

      Er meint das dein Code nur die neue Exe runterlädt. Das ist so, aber bei mehreren Dateien bietet es sich an, eine ZIP-Datei herunterzuladen, diese zu extrahieren, einen externen Skript zu schreiben, den Script zu starten und das Programm zu beenden. Der Script kann dann den alten durch den neuen Ordner ersetzen und die neue Version starten. So mache ich es zumindest meistens.
      Also in die erste Zeile von Version.txt kommt die Version
      ...
      Der Code überprüft ob die Zahl die in dieser Zeile steht grösser ist, wenn ja Downloadet er das neue Programm(der link steht in der zweiten zeile)

      BSP:

      Ich habe ein programm. V1

      Jetzt hab ich ein Update, also schreibe ich in die erste Zeile (von Version.txt) die neue Version (in diesem fall 2) und in die 2. Zeile
      den Downloadlink. In diesem neuen Prgramm muss aber die Zahl im Label natürlich um 1 vergrössert werden.


      z.B (verseion.txt)

      2
      meindownloadlink.html
      "I think Microsoft has abused the Windows brand so much that it has lost its cachet."
      Paul Thurrott
      Du musst in Label2.Text warscheinlich die Version schreiben.
      Daher wird der Fehler kommen.
      Wie du im Code erkennen kannst, wird Label2.Text = irgendwas nicht gemacht. Daher ist Label2.Text nichts.
      Das hat mottzi nicht richtig beschrieben.
      In dem Label steht immer die aktuelle Version (in einer einstelligen Zahl - bei der neuen Version nicht vergessen die Zahl um 1 zu erhöhen)
      wintoolz.de
      • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
      • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
      • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

      Benutze auch du Ecosia
      Jo, ich meine nur du hättest schreiben können im Label2. Oder einen Kommentar hier die Codezeile setzen, dass dort die Version stehen muss.
      Hab ich mir den Code mal angeschaut und auch zuerst suchen müssen für was das Label2 ist.
      wintoolz.de
      • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
      • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
      • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

      Benutze auch du Ecosia
      motzzi gut erklärt aber ich bekomme immer eine fehlermeldung bei:

      VB.NET-Quellcode

      1. My.Computer.Network.DownloadFile("http://pimpmybrain.pi.funpic.de/version.txt", Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\version.txt") ' Datei Neu Downloaden - Hier den Link zu der version.txt


      da kommt immer:
      Die Verbindung mit dem Remoteserver kann nicht hergestellt werden.

      was mache cih flasch?
      Ganz sicher? Bei mir geht dein Code :huh: Hattest du auch ganz sicher Inet, als dus versucht hast?

      Ansonsten hab ich hier ein Programm, siehs dir ma an : [url]http://iupdate.npage.de/[/url]
      "I think Microsoft has abused the Windows brand so much that it has lost its cachet."
      Paul Thurrott