VB Updater erstellen

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von jvbsl.

    VB Updater erstellen

    Hi Leute !
    Bin recht neu hier im Forum und hab schon meine erste Frage bzw. mein erstes Problem. Ich versuche schon seit einigen Tagen einen Updater zu bauen. Ich hab schon im Forum und auch in Google gesucht aber hab nichts gefunden das meinen Erwartungen entspricht.
    Ich will den updater in meine homepage einbauen damit man überprüfen kann ob es neue uploads gibt.(Bei mir sind das Programme (von mir versteht sich))
    Ich stell mir das folgendermaßen vor .exe starten => klick auf button "Suchen" => eine Progressbar lädt daweil (damit es optisch schöner wirkt :P) => falls es neue Uploads auf meinem ftp server gibt sollen die downloadlinks in einem Panel oder Label aufgelistet werden.

    Falls ihr vorschläge habt wie das klappen könnte oder einige tipps habt bitte nicht zögern und lostippen.
    Bedanke mich schon mal im voraus!

    Mfg Kudo :thumbsup:

    *Geht über Grundlagen hinaus => Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Also im Grunde genommen brauchst du für einen Updater eine Txt-Datei auf einem Webserver, welche die aktuelle Versionsnummer enthält (bsp. 1.0.2.0)
    Bei jedem Programmstart (oder bei einem Updateaufruf) überprüfst du, ob die Version die aktuell gestartet ist, die selbe Versionsnummer hat, wie die Datei auf dem Webserver.
    Wenn die beiden Nummern identisch sind, hast du die aktuellste Version installiert.
    Wenn nicht, gibt es ein Update.

    Dann brauchst du z.B. eine XML Datei, mit verschiedenen Tags (Titel, Autor, Releasedatum, Links, Screenshotlink, etc.). Diese liest du dann aus (mit XML.XMLDocument) und zeigst die Informationen auf einem Fenster oder eben in Labels, etc.

    Den Download kannst du dann mit einem WebClient ausführen...


    Grüsse
    Pascal
    Also erstmal danek für deinen schnelle antwort. Das mit der versionsnummer hab ich schon gelesen aber das mit der xml datei hör ich zum ersten mal. könntest du das bitte etwas näher beschrieben bzw. wie würde dann der code dafür lauten. ich glaub das is nämlich der punkt wonach ich suche.
    mfg kudo
    Das mit der XML ist nicht zwingend, aber ich habe das bei mir z.B. so gemacht (Vielleicht ist es nicht die beste Lösung...)

    Also:
    Du hast eine XML-Datei mit folgendem Grundschema:

    XML-Quellcode

    1. <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
    2. <?xml-stylesheet href="" type=""?>
    3. <!DOCTYPE tag [
    4. <!ELEMENT tag (#PCDATA)>
    5. ]>
    6. <Update>
    7. <Version>1.1.2.0</Version>
    8. <Titel>NameDesProgramms</Titel>
    9. <Autor>DeinName</Autor>
    10. <Beschreibung>Changelog</Beschreibung>
    11. <Bild>http://deineseite/screenshot.png</Bild>
    12. <Link>http://deineseite/DeinProgramm.exe</Link>
    13. </Update>


    Das lädst du ebenfalls auf deinen Webserver. Und wenn jetzt beim Überprüfen der Versionsnumemr in der online Textdatei ergibt, dass nicht die aktuellste Version installiert ist, wird diese XML Datei aufgerufen:

    VB.NET-Quellcode

    1. Dim DLLink As String
    2. Dim nXMLDocument As New System.Xml.XmlDocument()
    3. nXMLDocument.Load("http://pascaln.bplaced.net/ASCII_Generator/update.xml")
    4. Label2.Text = nXMLDocument.GetElementsByTagName("Update").Item(0).FirstChild.InnerText
    5. Label1.Text = nXMLDocument.GetElementsByTagName("Update").Item(0).ChildNodes(1).InnerText
    6. TextBox1.Text = nXMLDocument.GetElementsByTagName("Update").Item(0).ChildNodes(1).InnerText
    7. TextBox2.Text = nXMLDocument.GetElementsByTagName("Update").Item(0).FirstChild.InnerText
    8. TextBox3.Text = nXMLDocument.GetElementsByTagName("Update").Item(0).ChildNodes(2).InnerText
    9. TextBox4.Text = nXMLDocument.GetElementsByTagName("Update").Item(0).ChildNodes(3).InnerText
    10. PictureBox1.Load(nXMLDocument.GetElementsByTagName("Update").Item(0).ChildNodes(4).InnerText)
    11. DLLink = nXMLDocument.GetElementsByTagName("Update").Item(0).ChildNodes(5).InnerText


    Somit kannst du in einer Form direkt anzeigen, was die Neuerungen sind, etc.
    Da kann der Benutzer immer noch entscheiden, ob er das Update will oder nicht.

    Grüsse
    Pascal

    MB-Tech schrieb:

    Ich würde das mit einer Simplen TXT machen.

    Ansonsten sollte der WebClient ein gutes Stichwort sein.

    Das mit der XML-Datei habe ich jetzt bei mir persönlich so gemacht, denn da kann der Benutzer noch vor dem Download sehen, was die Neuerungen sind.
    Aber selbstverständlich könnte man diese Informationen auch in eine TXT Datei packen, oder meinst du es?


    Grüsse
    Pascal
    Das mit der .xml datei is sehr lang gibt es nicht eine kürzere methode. wie zb. Wenn ich in eine Textdatei( bzw .html) die links je eine in eine zeile schreibe und diese dann ausgeben kann. Weis einer vllt den code für so einen befehl.
    mfg kudo
    Ich habe mal für mich selbst einen Multi Updater gemacht.
    Der Update ließt eine TextDatei aus, welche auf dem FTP liegt.
    Dann wird einfach alles ausgewertet und die Dateien gedownloadet.

    Kudo schrieb:

    Das mit der .xml datei is sehr lang gibt es nicht eine kürzere methode. wie zb. Wenn ich in eine Textdatei( bzw .html) die links je eine in eine zeile schreibe und diese dann ausgeben kann. Weis einer vllt den code für so einen befehl.
    mfg kudo


    Wei ich deinem Post entnehmen kann, willst du nur die Downloadlinks auslesen und dann downloaden. Das geht natürlich auch mit einer simplen TXT, in welcher du pro Zeile ein Link hast. Diese splittest du dann und lädst jede Datei herunter.

    Das mit dem XML ist jetzt nur wichtig, wenn du willst, dass sich der Benutzer vor dem Download über die jeweiligen Änderungen informieren kann (Ich habe das jetzt bei mir jeweils so eingebaut).

    EDIT: Samplecode

    Quellcode

    1. Dim txt As String = WebClient.DownloadString("Pfadzuronlinedatei")
    2. For Each l In txt.Split(vbCrLf)
    3. WebClient.DownloadFileAsync("Downloadlink", "Lokalerpfad")
    4. Next
    5. MessageBox.Show("Update erfolgreich")



    Grüsse
    Pascal
    warum denn so kompliziert? Ich würde einfach nur Lokal ein Datum speichern, wann zum letzten mal auf Suchen gedrückt worden ist, anschließend kann man einfach mit einem PHP Skript überprüfen, von welchen Dateien das Änderungsdatum höher ist->Links anzeigen
    und Fertig
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---

    jvbsl schrieb:

    warum denn so kompliziert? Ich würde einfach nur Lokal ein Datum speichern, wann zum letzten mal auf Suchen gedrückt worden ist, anschließend kann man einfach mit einem PHP Skript überprüfen, von welchen Dateien das Änderungsdatum höher ist->Links anzeigen
    und Fertig
    Ja Genau so wollt ich es auch machen aber ich wusste nicht wie. Wie geht das dann mit dem Skript kannst du das mal bitte näher erläutern.
    de.php.net/filectime
    mit der Funktion date kannst du es noch in ein "schöneres" Datum umwandeln, aber das überprüfen würde ich trotzallem direkt mit dem UNIX Timestamp machen ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---