[Visual Basic 2008] Simpler Updater

  • Hallo zu meinem 1. Guide,

    ich werde euch Heute zeigen, wie man einen simplen Updater in das Programm einbauen kann.
    Man könnte den Updater dann noch erweitern, aber ich will euch nur einmal das Grundgerüst vor Augen bringen.
    Der Updater wird die aktuelle Version des Programms, mit einer anderen, auf dem FTP gelagerten, vergleichen. Wenn die aktuelle Version nicht mehr mit der auf dem FTP einstimmt, wird nach einem Update gefragt.

    Wir brauchen:

    -einen FTP Server (zB von Kostenloser Webspace & Fotos | ohost.de)
    -ein FTP "verwaltungs" Programm (zB Download FileZilla from SourceForge.net)
    -eine Textdatei, in der die aktuelle Version steht
    -ein kleines bisschen Gehirn :ORLY:

    FTP Server


    Wir gehen auf Kostenloser Webspace & Fotos | ohost.de und erstellen uns dort einen Account.
    Den bestätigen wir dann und loggen uns mit unseren Daten ein.
    Nun klicken wir auf "Webhosting FTP" und aktivieren den FTP.
    Wir ändern das Passwort und schreiben es uns auf.

    Sind wir damit schonmal fertig, aber das sollte ja wohl jeder hinkriegen^^

    Der Upload der Textdatei

    Anfangs erstellen wir eine neue Textdatei auf dem Desktop.
    Nennen wir sie "Update.txt". In die "Update.txt" schreiben wir unsere aktuelle Version des Programms rein (zB 1.0)
    Dann können wir die neue Textdatei auch wieder schließen.
    Wir starten Filezilla und geben oben unsere FTP Daten ein.
    Wer sie nicht mehr weiß, kann auf http://www.ohost.de nochmal nachschauen.

    Nun sind wir eingeloggt und erstellen auch sofort ein neues Verzeichnis (Rechtsklick). Dieses nennen wir "update".
    Dann suchen wir unsere Textdatei und ziehen sie rechts ins neue Verzeichnis rein.
    Doppelklick auf das Verzeichnis und wir sehen unsere Update.txt ~
    Rechtsklick auf die Textdatei und wir nehmen das ".txt" am ende weg.
    Das wars auch schon.


    Der eigentliche Teil


    Wir erstellen eine neue Windows Forms Anwendung mit dem Namen "Updater".

    Für den Updater brauchen wir:

    -1x Label mit dem Text eurer aktuellen Version (zb. 1.0)
    Das Label sollte in den Eigenschaften auf Visible = False gestellt werden.
    :OSMILEY:

    Nun machen wir einen Doppelklick auf unsere Form, um in das Form_Load Ereignis zu kommen.

    Wir möchten, dass wenn es ein Update gibt, wir gefragt werden, ob wir die neueste Version herunterladen wollen.

    Zunächst Importieren wir über "Public Class" "System.Net":

    Code
    Imports System.Net

    Das benötigen wir einfach, um später mehr Möglichkeiten zu haben, um mit dem Internet zu arbeiten.

    Dann brauchen wir noch einen Webclienten. Den deklarieren wir unter "Public Class":

    Code
    Dim client As New Net.Webclient

    Mit diesem Webclient können wir jetzt Dateien downloaden/lesen etc etc
    Dann deklarieren wir noch "dateiversion".

    Code
    Dim Dateiversion As String = client.DownloadString("Euer Link zur Textdatei")

    Damit liest er die Textdatei auf dem FTP Server und weiß welche die aktuelle Version ist.

    So, jetzt wollen wir überprüfen, ob die "dateiversion" höher ist, als die Version im Label.

    Code
    If Dateiversion > Label1.Text Then

    Wenn die Dateiversion auf dem FTP größer ist, als die auf dem FTP, dann soll etwas passieren. In dem fall fragen, ob wir updaten wollen.

    Erstmal deklarieren wir die URL zur .exe, die wir herunterladen wollen.

    Code
    Dim URL As String = "Euer Link zur EXE"

    Damit weiß er, dass "URL" der Link zur Datei ist.

    Wollen wir Updaten?

    Code
    If MsgBox("Ein Update ist verfügbar, wollen sie es herunterladen?", MsgBoxStyle.YesNo, "Updater") = MsgBoxResult.Yes Then
                client.DownloadFileAsync(New Uri(URL), Application.StartupPath & "\Zielname.exe")
            End If

    Es taucht eine Msgbox auf und fragt ob wir updaten wollen. Wenn man auf "Yes" klickt, wird die Datei vom Link gedownloadet und da hingespeichert, wo das Programm gestartet wurde. Undzwar wird die .exe dann "Zielname.exe" heißen.

    Zitat

    client.DownloadFileAsync(New Uri(URL)

    Das bewirkt, dass er die Datei im Hintergrund downloadet.
    Undzwar von der URL, die als neuer Link (Uri) dargestellt wird.

    Und wenn die Dateiversion nicht höher ist, dann kommt eine Msgbox.

    Code
    Else
                MsgBox("Keine Updates verfügbar", MsgBoxStyle.Information, "Updater")
    
    
            End If

    Der ganze Code sieht dann so aus:

    Code

    Ich hoffe ihr konntet es verstehen und wenn es Fragen etc gibt, postet sie einfach :yarr:


  • Zitat

    MsgBox("Ein Update ist verfügbar, wollen sie es herunterladen?", MsgBoxStyle.YesNo, "Updater")
    If MsgBoxResult.Yes Then
    client.DownloadFileAsync(New Uri(URL), Application.StartupPath & "\Zielname.exe")
    End If


    welche msgbox soll da erscheinen

    Code
    MsgBox("Ein Update ist verfügbar, wollen sie es herunterladen?", MsgBoxStyle.YesNo, "Updater")
                If MSGBox("Update?") = MsgBoxResult.Yes Then
                    client.DownloadFileAsync(New Uri(URL), Application.StartupPath & "\Zielname.exe")
                End If
    Zitat von Steve Jobs

    Stay hungry - stay foolish.



  • Ou, sry.
    Da hab ich mich vertan, es muss so lauten:

    Code
    If MsgBox("Ein Update ist verfügbar, wollen sie es herunterladen?", MsgBoxStyle.YesNo, "Updater") = MsgBoxResult.Yes Then
    client.DownloadFileAsync(New Uri(URL), Application.StartupPath & "\Zielname.exe")
    End If

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!