Hallo,
ich dachte, machste mal nen Tutorial zu UpdateSystem.Net. Was behandelt wird:
Voraussetzung:
Wieso UpdateSystem.Net?
Vielleicht wird sich ja jemand fragen, wieso er dies hier nehmen soll, statt einfach einer Textdatei auf einem FTP-Server . Meine Frage: Wieso nicht? UpdateSystem.Net bietet eine super Verwaltung für Updatepakete, Statistiken, ... Außerdem ist es, wenn man erstmal mit der einmaligen Einrichtung fertig ist, ein Kinderspiel, auf Updates zu prüfen, etc. Aber es gibt noch einen Grund, der sehr viel wichtiger ist als das, was ich gerade genannt habe: Die Sicherheit. Die Updatepakete werden bei der Erstellung mit einer 4096-Bit starken RSA Signatur versehen, welche während dem Update gegengeprüft wird. So ist es fast unmöglich für Hacker, die eure Zugangsdaten haben, einen Virus als Update einzuschleusen.
Einrichtung
Als erstes müssen wir uns UpdateSystem.Net downloaden. Das könnt ihr unter folgendem Link tun:
updatesystem.net/Download/
Leider ist die Website von UpdateSystem.Net nicht mehr verfügbar. Ihr könnt das ganze hier downloaden:
dropbox.com/s/8mkgbeektv842jv/…System.NET.Setup.exe?dl=0
Mirror (weil Dropbox regelmäßig die Links sperrt, weil die zu viel Traffic verursachen):
1drv.ms/u/s!Ar7zxsseW6UlgdVgsGQbdvbhA6uGSA
Nach dem die Datei auf eurer Festplatte ist, startet ihr diese, stimmt der Lizenz zu, Spendet ggf., wählt den Pfad aus und klickt auf Installieren. Wenn es fertig Installiert ist, schließen wir das Fenster und starten das Programm. Anschließend klicken wir auf "Neues Projekt":
Es öffnet sich nun ein neues Fenster, wo ihr den Namen der Anwendung, die Update Url und den Pfad des Projekts auswählen könnt.
Die Url ist einfach der Link zu eurem Webspace, wo ihr die Pakete drin speichern wollt.
Im nächsten Schritt können wir uns entscheiden, ob wir Statistiken haben wollen (wie viele Downloads pro Tag etc.). Ich wähle "Statistikerfassung aktivieren", wenn ihr das nicht braucht könnt ihr den folgenden Schritt einfach überspringen.
Nachdem wir den Radiobutton ausgewählt haben wird die Schaltfläche "Server auswählen" aktiviert. Da klicken wir drauf:
Nun erscheint ein neues Fenster, wo wir auf "Neuen Statistikserver erstellen" klicken. Es poppt ein weiteres Fenster auf, wo wir PHP und MySQL auswählen. Vorraussetung ist, dass eurer Webspace midestens PHP5 und MySQL 4 hat.
Nach einem Klick auf "Weiter" müssen wir unsere FTP-Daten eingeben:
Um die Daten zu testen könnt ihr den Button "Server durchsuchen" anwählen. Dort könnt ihr auch euer Statistikverzeichnis festlegen. Wir klicken wieder auf "Weiter" und geben bei "Server Adresse" den HTTP-Pfad zu unserem Statistikordner an. Anschließend wählen wir einen beliebigen Benutzernamen und ein Passwort aus, welches wir wiederholen müssen:
Als letzten Schritt müssen wir noch unsere SQL-Daten angeben. Dazu müssen wir auf unserem Webspace zuerst eine neue Datenbank anlegen. Dies ist bei jedem Hoster anders, deswegen werde ich das hier auch nicht beschreiben. Als Tabellennamen geben wir irgendeinen Namen ein, aber es darf noch keine Tabelle mit gleichem Namen vorhanden sein:
Wir klicken nun auf "Weiter", dann nochmal auf "Weiter" und nun werden die Dateien hochgeladen und die Tabelle wird erstellt. Wenn alles fertig ist klicken wir wieder auf "Weiter" und nun ist unter "Statistiken verwalten" ein neuer Eintrag:
Wir klicken auf "OK" und anschließend in der Form "Neues Projekt erstellen" auf "Weiter".
Diesmal wählen wir allerdings unseren Ordner für die Updatepakete aus. Nach einem erneuten Klick auf "Weiter" klicken wir auf die Schaltfläche "Server einrichten":
Nach einem erneuten Klick auf "Weiter" sind wir auch schon fertig und unser Projekt wird geöffnet.
Integration in Windows Forms Anwendungen über das Standardfenster
Als ersten Schritt erstellen wir ein neues Projekt. Dann fügen wir unserer Toolbox das UpdateSystemController-Control hinzu. Die Assembly ist standardmäßig unter
Anschließend öffnen wir das Programm UpdateSystem.Net, klicken auf "Projekteinstellungen kopieren" und anschließend auf "Daten kopieren":
Nun gehen wir wieder in unser VB-Projekt, klicken auf den Pfeil von UpdateController1 und klicken auf den Text "Projekteinstellungen aus der Zwischenablage einfügen". Nun werden im Eigenschaftsfenster einige Eigenschaften verändert.
Wie müssen noch dem Control klar machen, welche Version wir zurzeit haben. Das geht entweder über die Assemblyversion oder ihr könnt direkt dem Control die Version mitteilen über einen String. Wir nehmen die Assemblyversion und das machen wir klar, indem wir
Tipp: Die Assembly-Version könnt ihr unter My-Project > AssemblyInformationen... > Assemblyversion verändern.
Jetzt müssen wir nur noch an der Stelle, wo wir auf Updates überprüfen wollen, folgendes hinschreiben:
Zum Schluss könnt ihr noch folgende Zeile Code bei der Initialisierung schreiben:
dann schließt sich die Anwendung automatisch, wenn ein Update durchgeführt wird.
Integration in WPF
Jetzt wollen wir natürlich auch unsere WPF-Anwendungen Updaten. Dieser Abschnitt beschreibt, wie ihr einen eigenen Dialog erstellen könnt. Dieser Abschnitt ist also auch Interessant für Spiele und für Anwendungen, die andere Themes verwenden oder für die, die das Design vom Standarddialog unschön finden. Also dieser Abschnitt richtet sich nicht nur an WPFler.
Als erstes erstellen wir ein neues WPF-Projekt, wo wir den updateSystemDotNet.Controller als Verweis hinzufügen, welcher standardgemäß unter folgendem Pfad zu finden ist:
Wir wechseln direkt in die Codeansicht, wo wir in das Event
Den UpdateController deklarieren wir aber als Member-Variable und als WithEvents:
Anschließend rufen wir in der FormLoad noch
Jetzt können wir ein neues Fenster hinzufügen, welches das Changelog etc. anzeigt. Hier mal eine Liste, wie ihr die Informationen bekommt, die auch in dem fertigen WinForms Dialog zu sehen sind:
Aktuelle Version:
Neuste Version:
Größe und Changelog:
Updates downloaden:
Updates ausführen:
Updates abbrechen:
Ein Beispielprojekt könnt ihr euch hier downloaden.
Erstellen von Updatepaketen
Und nun kommt der wichtigste Teil, das erstellen von Updatepaketen. Durch UpdateSystem.Net ist das super einfach. Ihr geht im UpdateSystem.Net Programm auf "Updatepakete" (Links im TabControl) und anschließend auf "Hinzufügen".
Nun könnt ihr als erstes einstellen, welche Version des Programms im Updatepaket enthalten ist. Danach könnt ihr den Typ auswählen (Also Alpha/Beta/Final). Wenn das Paket für ein spezielles Bit-System kompeliert/erstellt wurde, könnt ihr das unter Architektur auswählen. Die Beschreibung ist für euch, die wird in der Liste der Updatepakete angezeigt. Der Rest ist schon beschrieben.
Unter dem nächsten Tab, Verfügbarkeit, könnt ihr einstellen, welche Versionen das Update bekommen sollen:
Als nächstes kommt der Tab Änderungen. Ihr könnt das Changelog für zwei Sprachen machen, Deutsch und Englisch. In eurem Programm wird dann das angezeigt, was eingestellt wurde.
Ihr könnt eigene Felder hinzufügen, welche ihr über euren UpdateController mit
Und nun kommt das wichtigste: Die Aktionen. Hier könnt ihr einstellen, was das Updatepaket machen soll. Ich denke, das meiste erklärt sich von selbst. Wenn ihr einen Pfad eingeben müsst, habt ihr Pfadvariablen, die ich hier einmal kurz erläutern möchte:
$approot: Programmverzeichnis
Beschreibung: Also der Ordner, wo eure Anwendung drin ist.
$tempdir: Temporäresverzeichnis
Beschreibung: Dies ist der Tempordner, welcher u. a. durch
$windir: Windowsverzeichnis
Beschreibung: Das Windows-Installationsverzeichnis. Standardgemäß ist dies unter
$appdata: Anwendungsdaten
Beschreibung: Dies ist der AppData ordner, welcher u. a. durch %appdata% erreicht werden kann.
$commonAppdata: Gemeinsame Anwendungsdateien
Beschreibung: Der Programmdata-Ordner. Dieser ist Standardgemäß unter
Experimentiert einfach ein bisschen rum.
Wenn jemand euer Update downloadet oder eine Anfrage sendet, ist dies, falls eingestellt, unter den Statistiken zu sehen:
Schlusswort
Ich hoffe, ihr habt alles verstanden. Wenn ihr Rechtschreibfehler findet, könnt ihr mir die gerne per PN schreiben. Wenn ihr fragen habt, stellt sie im Hauptforum.
ich dachte, machste mal nen Tutorial zu UpdateSystem.Net. Was behandelt wird:
- Wieso UpdateSystem.Net?
- Einrichtung
- Integration in Windows Forms Anwendungen über das Standardfenster
- Integration in WPF
- Erstellen von Updatepaketen
Voraussetzung:
Wieso UpdateSystem.Net?
Vielleicht wird sich ja jemand fragen, wieso er dies hier nehmen soll, statt einfach einer Textdatei auf einem FTP-Server . Meine Frage: Wieso nicht? UpdateSystem.Net bietet eine super Verwaltung für Updatepakete, Statistiken, ... Außerdem ist es, wenn man erstmal mit der einmaligen Einrichtung fertig ist, ein Kinderspiel, auf Updates zu prüfen, etc. Aber es gibt noch einen Grund, der sehr viel wichtiger ist als das, was ich gerade genannt habe: Die Sicherheit. Die Updatepakete werden bei der Erstellung mit einer 4096-Bit starken RSA Signatur versehen, welche während dem Update gegengeprüft wird. So ist es fast unmöglich für Hacker, die eure Zugangsdaten haben, einen Virus als Update einzuschleusen.
Einrichtung
Als erstes müssen wir uns UpdateSystem.Net downloaden. Das könnt ihr unter folgendem Link tun:
Leider ist die Website von UpdateSystem.Net nicht mehr verfügbar. Ihr könnt das ganze hier downloaden:
dropbox.com/s/8mkgbeektv842jv/…System.NET.Setup.exe?dl=0
Mirror (weil Dropbox regelmäßig die Links sperrt, weil die zu viel Traffic verursachen):
1drv.ms/u/s!Ar7zxsseW6UlgdVgsGQbdvbhA6uGSA
Nach dem die Datei auf eurer Festplatte ist, startet ihr diese, stimmt der Lizenz zu, Spendet ggf., wählt den Pfad aus und klickt auf Installieren. Wenn es fertig Installiert ist, schließen wir das Fenster und starten das Programm. Anschließend klicken wir auf "Neues Projekt":
Es öffnet sich nun ein neues Fenster, wo ihr den Namen der Anwendung, die Update Url und den Pfad des Projekts auswählen könnt.
Die Url ist einfach der Link zu eurem Webspace, wo ihr die Pakete drin speichern wollt.
Im nächsten Schritt können wir uns entscheiden, ob wir Statistiken haben wollen (wie viele Downloads pro Tag etc.). Ich wähle "Statistikerfassung aktivieren", wenn ihr das nicht braucht könnt ihr den folgenden Schritt einfach überspringen.
Nachdem wir den Radiobutton ausgewählt haben wird die Schaltfläche "Server auswählen" aktiviert. Da klicken wir drauf:
Nun erscheint ein neues Fenster, wo wir auf "Neuen Statistikserver erstellen" klicken. Es poppt ein weiteres Fenster auf, wo wir PHP und MySQL auswählen. Vorraussetung ist, dass eurer Webspace midestens PHP5 und MySQL 4 hat.
Nach einem Klick auf "Weiter" müssen wir unsere FTP-Daten eingeben:
Um die Daten zu testen könnt ihr den Button "Server durchsuchen" anwählen. Dort könnt ihr auch euer Statistikverzeichnis festlegen. Wir klicken wieder auf "Weiter" und geben bei "Server Adresse" den HTTP-Pfad zu unserem Statistikordner an. Anschließend wählen wir einen beliebigen Benutzernamen und ein Passwort aus, welches wir wiederholen müssen:
Als letzten Schritt müssen wir noch unsere SQL-Daten angeben. Dazu müssen wir auf unserem Webspace zuerst eine neue Datenbank anlegen. Dies ist bei jedem Hoster anders, deswegen werde ich das hier auch nicht beschreiben. Als Tabellennamen geben wir irgendeinen Namen ein, aber es darf noch keine Tabelle mit gleichem Namen vorhanden sein:
Wir klicken nun auf "Weiter", dann nochmal auf "Weiter" und nun werden die Dateien hochgeladen und die Tabelle wird erstellt. Wenn alles fertig ist klicken wir wieder auf "Weiter" und nun ist unter "Statistiken verwalten" ein neuer Eintrag:
Wir klicken auf "OK" und anschließend in der Form "Neues Projekt erstellen" auf "Weiter".
Diesmal wählen wir allerdings unseren Ordner für die Updatepakete aus. Nach einem erneuten Klick auf "Weiter" klicken wir auf die Schaltfläche "Server einrichten":
Nach einem erneuten Klick auf "Weiter" sind wir auch schon fertig und unser Projekt wird geöffnet.
Integration in Windows Forms Anwendungen über das Standardfenster
Als ersten Schritt erstellen wir ein neues Projekt. Dann fügen wir unserer Toolbox das UpdateSystemController-Control hinzu. Die Assembly ist standardmäßig unter
C:\Program Files\updateSystem.NET\updateSystemDotNet.Controller.dll
zu finden. Nun ziehen wir das Control ganz einfach per Drag & Drop auf das Fenster:Anschließend öffnen wir das Programm UpdateSystem.Net, klicken auf "Projekteinstellungen kopieren" und anschließend auf "Daten kopieren":
Nun gehen wir wieder in unser VB-Projekt, klicken auf den Pfeil von UpdateController1 und klicken auf den Text "Projekteinstellungen aus der Zwischenablage einfügen". Nun werden im Eigenschaftsfenster einige Eigenschaften verändert.
Wie müssen noch dem Control klar machen, welche Version wir zurzeit haben. Das geht entweder über die Assemblyversion oder ihr könnt direkt dem Control die Version mitteilen über einen String. Wir nehmen die Assemblyversion und das machen wir klar, indem wir
retriveHostVerison
auf True
setzten. (Benutzerdefiniert würde über releaseInfo -> Version gehen)Tipp: Die Assembly-Version könnt ihr unter My-Project > AssemblyInformationen... > Assemblyversion verändern.
Jetzt müssen wir nur noch an der Stelle, wo wir auf Updates überprüfen wollen, folgendes hinschreiben:
Zum Schluss könnt ihr noch folgende Zeile Code bei der Initialisierung schreiben:
dann schließt sich die Anwendung automatisch, wenn ein Update durchgeführt wird.
Integration in WPF
Jetzt wollen wir natürlich auch unsere WPF-Anwendungen Updaten. Dieser Abschnitt beschreibt, wie ihr einen eigenen Dialog erstellen könnt. Dieser Abschnitt ist also auch Interessant für Spiele und für Anwendungen, die andere Themes verwenden oder für die, die das Design vom Standarddialog unschön finden. Also dieser Abschnitt richtet sich nicht nur an WPFler.
Als erstes erstellen wir ein neues WPF-Projekt, wo wir den updateSystemDotNet.Controller als Verweis hinzufügen, welcher standardgemäß unter folgendem Pfad zu finden ist:
C:\Program Files\updateSystem.NET\updateSystemDotNet.Controller.dll
Wir wechseln direkt in die Codeansicht, wo wir in das Event
Loaded
den Code aus UpdateSystem.Net Programm > Projekteinstellungen kopieren > VB.NET Code reinkopieren. Es sollte nun ungefähr so aussehen:VB.NET-Quellcode
- Class MainWindow
- Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
- 'updateController Objekt initialisieren
- Dim updController As New updateSystemDotNet.updateController()
- updController.updateUrl = "http://Server.net/Update/"
- updController.projectId = "ProjektID"
- updController.publicKey = "Key"
- 'Releasefilter setzen, per Default wird nur nach finalen Versionen gesucht:
- updController.releaseFilter.checkForFinal = True
- updController.releaseFilter.checkForBeta = False 'Betaversionen in die Suche mit einbeziehen? Wenn ja dann auf true setzen.
- updController.releaseFilter.checkForAlpha = False 'Alphaversionen in die Suche mit einbeziehen? Wenn ja dann auf true setzen.
- 'Anwendung nach dem Update neustarten?
- updController.restartApplication = True
- 'Wie soll die lokale Version ermittelt werden?
- updController.retrieveHostVersion = True 'Empfohlen, damit wird automatisch die Assemblyversion ermittelt.
- 'Die Version kann allerdings auch manuell gesetzt werden:
- 'z.B.: updController.releaseInfo.Version = "1.2.3.4"
- 'Einfacher Aufruf der Updatesuche:
- 'updController.updateInteractive()
- End Sub
- End Class
Den UpdateController deklarieren wir aber als Member-Variable und als WithEvents:
Anschließend rufen wir in der FormLoad noch
updController.checkForUpdatesAsync()
auf. Jetzt brauchen wir das Event updateFound
. Dieses wird, wie der Name schon sagt, ausgelöst, wenn ein neues Update gefunden wurde.Jetzt können wir ein neues Fenster hinzufügen, welches das Changelog etc. anzeigt. Hier mal eine Liste, wie ihr die Informationen bekommt, die auch in dem fertigen WinForms Dialog zu sehen sind:
Aktuelle Version:
Neuste Version:
Größe und Changelog:
VB.NET-Quellcode
- Dim size As Long = 0
- Dim sb As New Text.StringBuilder
- For Each package As updatePackage In updController.currentUpdateResult.newUpdatePackages
- 'IntelliSense und der Objectbrowser helfen euch, weitere Informationen über das package auszugeben
- sb.Append("Änderungen in der Version " & package.releaseInfo.Version & " (Veröffentlicht am: " & package.ReleaseDate.Remove(package.ReleaseDate.Length - 10) & ")" & _
- Environment.NewLine & "------------------------------" & Environment.NewLine & updController.currentUpdateResult.Changelogs(package).germanChanges & Environment.NewLine)
- size += package.packageSize
- Next
- Dim roundsize As Double
- roundsize = size \ 1024
- roundsize = roundsize / 1024
- 'Größe = Math.Round(roundsize, 2).ToString & " MB"
- 'Changelog = sb.ToString()
Updates downloaden:
Updates ausführen:
Updates abbrechen:
Ein Beispielprojekt könnt ihr euch hier downloaden.
Erstellen von Updatepaketen
Und nun kommt der wichtigste Teil, das erstellen von Updatepaketen. Durch UpdateSystem.Net ist das super einfach. Ihr geht im UpdateSystem.Net Programm auf "Updatepakete" (Links im TabControl) und anschließend auf "Hinzufügen".
Nun könnt ihr als erstes einstellen, welche Version des Programms im Updatepaket enthalten ist. Danach könnt ihr den Typ auswählen (Also Alpha/Beta/Final). Wenn das Paket für ein spezielles Bit-System kompeliert/erstellt wurde, könnt ihr das unter Architektur auswählen. Die Beschreibung ist für euch, die wird in der Liste der Updatepakete angezeigt. Der Rest ist schon beschrieben.
Unter dem nächsten Tab, Verfügbarkeit, könnt ihr einstellen, welche Versionen das Update bekommen sollen:
Als nächstes kommt der Tab Änderungen. Ihr könnt das Changelog für zwei Sprachen machen, Deutsch und Englisch. In eurem Programm wird dann das angezeigt, was eingestellt wurde.
Ihr könnt eigene Felder hinzufügen, welche ihr über euren UpdateController mit
package.customFields
abrufen könnt.Und nun kommt das wichtigste: Die Aktionen. Hier könnt ihr einstellen, was das Updatepaket machen soll. Ich denke, das meiste erklärt sich von selbst. Wenn ihr einen Pfad eingeben müsst, habt ihr Pfadvariablen, die ich hier einmal kurz erläutern möchte:
$approot: Programmverzeichnis
Beschreibung: Also der Ordner, wo eure Anwendung drin ist.
$tempdir: Temporäresverzeichnis
Beschreibung: Dies ist der Tempordner, welcher u. a. durch
%temp%
erreicht werden kann.$windir: Windowsverzeichnis
Beschreibung: Das Windows-Installationsverzeichnis. Standardgemäß ist dies unter
C:\Windows
$appdata: Anwendungsdaten
Beschreibung: Dies ist der AppData ordner, welcher u. a. durch %appdata% erreicht werden kann.
$commonAppdata: Gemeinsame Anwendungsdateien
Beschreibung: Der Programmdata-Ordner. Dieser ist Standardgemäß unter
C:\ProgramData
Experimentiert einfach ein bisschen rum.
Wenn jemand euer Update downloadet oder eine Anfrage sendet, ist dies, falls eingestellt, unter den Statistiken zu sehen:
Schlusswort
Ich hoffe, ihr habt alles verstanden. Wenn ihr Rechtschreibfehler findet, könnt ihr mir die gerne per PN schreiben. Wenn ihr fragen habt, stellt sie im Hauptforum.
Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von „VincentTB“ ()