updateSystem.NET

Maximilian
Aktuelle Version: 1.5.1
Produktseite:  updateSystem.NET
Quellcode:  @github
 Download

 BugTracker
Gastaccount für den Bugtracker:
Benutzername: Gast
Passwort: gast123

Unterstützte Betriebssysteme: Windows XP bis Windows 7
Benötigte .Net Frameworkversion: 2.0

Zusammenfassung
Das updateSystem.NET ist eine Updatelösung für .Net Anwendungen. Es kann einfach über die updateController-Komponente in die Anwendung eingebettet werden.
Der updateController bietet für die Updatesuche, die Anzeige und den Download eine moderne Oberfläche an. Es ist aber auch möglich diese Vorgänge komplett selbst zu gestalten. Dafür stehen einfach zu bedienende Methoden und Events bereit.
Benötigt wird lediglich ein Webspace welcher über FTP und HTTP zu erreichen ist. Für die Verbindung kann auch FTP über SSL verwendet werden, SFTP wird momentan noch nicht unterstützt.

Was kostet's?
Das updateSystem.NET ist und bleibt Kostenlos.
Da es sich hierbei aber um ein Hobbyprojekt von mir handelt kann ich nur begrentzt Support anbieten.

Statistikerfassung
Mit dem updateSystem.NET ist es optional möglich Statistiken über die Updateanfragen und Downloads zu sammeln. Die Auswertung der Daten erfolgt im updateDesigner.
Für einen Statistikserver benötigt man einen Webspace/Server mit Asp.Net (min. 2.0) und einen MsSql Server oder alternativ PHP und MySQL.


Hohe Skalierbarkeit
Der Updateprozess läßt sich durch die integrierten updateActions so gestalten wie es der Entwickler benötigt. Die einzelnen Aktionen wie z.B. das Kopieren- Ausführen oder Löschen von Dateien können unbegrentzt Hinzufügt und Angeordnet werden.
Bitte jetzt den Dateianhang anschauen :-)


Sicherheit
Die vom updateDesigner erstellen Updatepakete werden digital Signiert und vor der Installation vom updateInstaller überprüft. Dadurch wird sichergestellt, dass die Updatepakete korrekt heruntergeladen und auf dem Server nicht manipuliert wurden.

Benutzerkontensteuerung - Windows Vista/7 Support
Die Dateien des updateSystem.Net sind allesamt digital signiert, so dass dem Benutzer bei der Aktualisierung keine irritierende Meldungen über "Unbekannte Herausgeber" angezeigt werden.
Desweiteren werden auch alle Prozesse die von dem updateInstaller gestartet werden, standardmäßig mit den Benutzerrechten eines normalen Benutzers gestartet, auch wenn dieser als Administrator gestartet wurde.

Der updateInstaller benutzt zu dem auch die neue(n) UI Funktion(en) (momentan nur eine aber mal sehen was ich da noch finde :-)) von Windows 7. Zum Beispiel wird der Fortschritt der Installation auch in der Taskleiste angezeigt.


Wie Funktionierts nun genau?
Herz des ganzen ist der updateController (zu finden in der updateSystemDotNet.Controller.dll im Programmverzeichnis des updateSystem.Net) welcher in den Projekten Referenziert werden muss in welchen die Updatefunktionalität enthalten sein soll.
Der updateController kann als Komponente wie z.B. der BackgroundWorker oder Timer direkt von der ToolBox (muss manuell hinzugefügt werden) auf die Form gezogen und von dort über das PropertyGrid konfiguriert werden.

Ein kleines Schnellstartutorial wie die Updatesuche- der Download und die Installation am besten aufgerufen werden können gibt es  hier.
Das updateSystem.Net bietet natürlich noch weitere Funktionen, aber am besten ist es wenn ihr es selber mal ausprobiert, es kostet ja nichts :).
Eine Dokumentation für alle Eigenschaften, Events, etc. des updateController gibt es als CHM-Hilfedatei im Programmverzeichnis.

Über Testberichte oder Bugreports etc. würde ich mich sehr freuen, ich habe zwar alles ausgiebig getestet, aber es ist einfach nich möglich alle Testszenarien abzudecken.

Was momentan noch fehlt ist ein gescheites Log-System. Das steht noch ganz oben auf meiner ToDo-Liste.

Also, Danke schonmal fürs Testen,
viele Grüße Maximilian
Zony
Hallo,

ich bin dann heute mal dazu gekommen dein Programm zu testen.
Leider bekomme ich aktuell noch einen Fehler. Eventuell kannst du mir hier ja einen Tipp geben (ich hab aus Zeitmangel noch nicht soo wirklich viel gesucht).

Ich hab die Komponente laut deinem Forenbeitrag kurz eingebunden und mit der Admin GUI ein Update auf meinen Server hochgeladen.

C#-Code:
private void button1_Click(object sender, EventArgs e)
{
updateSystemDotNet.updateController updateController1 = new updateController("http://update.pierre-doll.de/test/";

//Einfacher aufruf mit angabe einer ParentForm
updateController1.updateInteractive(this);

updateController1.updateInstallerStarted += new updateSystemDotNet.updateInstallerStartedEventHandler (updateController1_updateInstallerStarted);

}

void updateController1_updateInstallerStarted(object sender, updateSystemDotNet.appEventArgs.updateInstallerStartedEventArgs e) {

this.Close();

}

Das Update wird auch gefunden, nach dem Klick auf installieren werde ich auch nach meinen Benutzerdaten (Admin) gefragt. Anschließend bleibt das Programm mit folgendem Fehler hängen:

Zitat:
Das Update konnte auf Grund folgenden Fehlers nicht fortgesetzt werden:Ein Teil des Pfades "C:\Windows\TEMP\b10a10ebc2d446b48ced9b27abdb52d1\bth_1.1.0.0.version.zip" konnte nicht gefunden werden.

OS ist Windows Vista x64

Ansonsten finde ich die Komponente sehr gelungen.

Die Admin GUI bietet einem mit dem Ablaufplan viele möglichkeiten und ist ansonsten recht einfach zu verstehen.

Das einbinden ins Programm ist auch ohne viel Aufwand möglich :)

Was ich aktuell noch vermisse ist die Statistikunterstürzung für PHP & MySQL aber ich denke die wird noch kommen.

Grüße
Maximilian
Grüß dich,
erstmal vielen Dank fürs testen :)
Habe grade den Fehler reproduzieren können. Ich hatte neulich einen ähnlichen beim testen unter XP und habe gedacht den nun entgültig erwischt zu haben. Aber da hab ich vermutlich irgend eine Pfadvariable übersehen.
Ich melde mich dann wieder wenn ich den Fehler behoben habe.

Danke nochmal, beste Grüße,
Maximilian
Maximilian
So, Fehler gefunden und behoben :) Das Update steht über die Updatefunktion vom Updatedesigner bereit.

Cheerio
Maximilian
So, eine neue Version ist raus. Zwar immernoch Beta aber der Final schon ein Stück näher.
Eine Übersicht über die Änderungen gibts  hier.
Ein bisschen stolz bin ich auf den Assistenten für ein neues Projekt, der Integriert sich jetzt perfekt in das Aero Glass Design (Screenshot davon im Anhang).
Die neue Version gibts entweder über die Downloadseite (Link weiter oben) oder über die Integriert Updatefunktion.

Cheerio
Zony
Hi DonMaxo,

einen Vorschlag hätte ich spontan noch.
Dein "Update verfügbar" Dialog (Anhang) kann in der Größe nicht verändert werden.
Das ganze sieht zwar nett aus aber das lesen der Release Infos ist so sehr umständlich.

Ich würde es besser finden, wenn die Größe variabel wäre.

Edit:
Ich habe grade versucht einen Statistikserver zu installieren. Leider weiß ich nicht was ich bei der Datenbank angeben soll. Kannst du mir eventuell eine kleine Hilfe geben?

Gruß
ViperNeo
Super Sache sag ich da nur. Habs mal getestet und finde es super leicht zu bedienen, scheint ordentlich zu laufen und die Admin GUI ist auch klasse. Das einzige was ich gerne noch hätte wären änderbare Titel in den GUI Dialogen deiner Komponente.

Dickes Lob!

Grüße
Maximilian
Moin ViperNeo,
Erstmal Danke :) Momentan wird bei allen Dialogen, außer dem Suchdialog, der Titel der Anwendung angezeigt, welchen du im Updatedesigner als 'Projektname' frei definieren kannst. Ansonsten könnte man noch über eine zusätzlichen Eigenschaft im updateController nachdenken die diese Überschreibt. Mal sehen :)

Cheerio
Maximilian
Moinsens,
es gibt nun die Finale Version 1.0 (Build 400). Den Download davon findet ihr im Post #1. Enthalten ist nun auch der auf PHP und MySql basierende Statistikdienst.

Die (neue) Website ist noch etwas spärrlich mit Content befüllt, da werde ich im laufe der Woche ein paar Schnellstart Tutorials posten die den Umgang erklären. Wer bis dahin Fragen zur Verwendung hat, einfach hier Fragen :)

Cheerio
Maximilian
Hallo zusammen,
es gibt ein Update auf die Version 1.0.500.

Changelog
  • Benutzer wird im Assistenten vom Statistiksetup darauf hingewiesen, dass die notwendige Tabelle automatisch vom Installer erstellt wird.
  • Statistikserverübersicht wird nach PHP und ASP.NET gruppiert.
  • Funktion zum Updaten von Statistikservern.
  • Changelogtextbox im updateController ist nun ReadOnly.
  • Clipboard Importplugin integriert.
  • Neue Version vom PHP Statistikscript, bitte über die integrierte Funktion aktualisieren.
Beste Grüße,
Maximilian
Tarion
Klingt super, würde ich gerne nutzten.
Hab nur etwas Angst vor auftretenden Fehlern, gerade beim Updater ist man dann doch sehr aufgeschmissen. Ist es möglich den Quellcode zu erhalten? Wie ist der Lizenziert?

Gruß, Tarion
Maximilian
Nun, das Projekt ist Closed Source und wird es auch bleiben.
Supporttechnisch kann ich, da ich das ganze in meiner Freizeit mache, nicht immer für eine schnelle Behebung von Fehlern garantieren (Job geht vor), aber ich setze das Programm ja selber in meinem Projekten ein, weshalb ich natürlich daran Interessiert bin auftretende Fehler so schnell wie möglich zu beheben.
Jelly
Also erstmal begrüsse ich diese Projekt sehr. Ich habs heute das erste Mal hier im Forum entdeckt. Und ich werds mir definitiv auch mal anschauen. Aber eins stört mich von vorne weg:

Zitat von Maximilian:
Benutzerkontensteuerung - Windows Vista/7 Support
...
Desweiteren werden auch alle Prozesse die von dem updateInstaller gestartet werden, standardmäßig mit den Benutzerrechten eines normalen Benutzers gestartet, auch wenn dieser als Administrator gestartet wurde.

Das seh ich wiederum als ein Problem. Wenn ein Benutzer die Updates einspielen soll, so sind nun mal eben normalerweise administrative Rechte notwendig. Im Regelfall kann ich weder unter "c:\Program Files" was reinschreiben, noch einen Registry Schlüssel unter HKLM anlegen. Ein Update geht also in 99% der Fälle schief, wenn der Anwender am PC nur also schlichter User oder Domain User definiert ist. Das ist aber in den allermeisten Firmen der Fall. Administrative Rechte (auch nicht lokale) sind in den wenigsten Fällen dem Enduser vergeben.

Da ich mich mit dieser Problematik auseinander gesetzt habe, weiss ich allerdings auch dach die Lösung nicht trivial ist, auch normalen Usern die Updatefunktion anzubieten, ohne über irgendwelche Impersonifikatione o.ä. zu gehen.

Trotzdem begrüsse ich dein Projekt natürlich sehr, und werds mir, wie gesagt, mal anschauen.
Maximilian
Moin Jelly,
ich glaube du hast das etwas Mißverstanden bzw. ich habe mich mißverständlich ausgedrückt.
Der updateInstaller fordert per Default Adminrechte beim Start. Ansonsten ist wie du schon erwähnt hast kein Schreiben im Programmverzeichnis bzw. außerhalb von HKCU in der Registry möglich.
Was ich meinte ist, dass es möglich ist vom updateInstaller aus (welcher den Admintoken enthält) Prozesse zu starten, welche dieses Token nicht erben. So wird z.B. das eigentliche Programm nach Beendigung des Updates eben nicht mit Administratorrechten gestartet wie es bei den meisten Updatern/Installern der Fall ist. Hoffe das ist nun etwas klarer :-)

Cheerio
Jelly
Ach so. Dann hatte ich dich falsch verstanden.

Du sagst, du forderst Adminrechte an, um das Updaten zu starten. Dazu muss der User aber dann wohl einen entsprechenden Account mit Passwort angeben. Das ist aber nicht unbedingt gewährleistet. Aber vielleicht versteh ich ja immer noch was falsch.
Maximilian
Zitat:
Du sagst, du forderst Adminrechte an, um das Updaten zu starten. Dazu muss der User aber dann wohl einen entsprechenden Account mit Passwort angeben. Das ist aber nicht unbedingt gewährleistet. Aber vielleicht versteh ich ja immer noch was falsch.

Das hast du schon richtig verstanden. Die Adminrechte werden beim Start angefordert, für die Zwangsläufig ein Adminaccount benötigt wird. Ich wüsste aber auch nicht wie man das sonst machen sollte außer über einen Service.

Cheerio
Jelly
Zitat von Maximilian:
Ich wüsste aber auch nicht wie man das sonst machen sollte außer über einen Service.

Das sehe ich auch als einziger Lösungsansatz. Ich bin selbst daran, ein solches Updatesystem zu überlegen, und die Lösung eines Service, der sich um die Updates kümmerst, bringt dann wiederum andere Problematiken mit sich. Also so oder so: trivial ist das Problem sicherlich nicht :-)
wizer
Hey arbeitest du noch an dem Updater?

Ich benutze ihn für eines meiner Projekte und bin überaus begeistert davon! Leider gibt es noch ein paar Kleinigkeiten die man ändern könnte. Beispielsweise würde ich gerne steuern können, ob der Dialog, dass das Update erfolgreich verlaufen ist, angezeigt werden soll oder nicht. Denn ich habe direkt nach dem kopieren der Dateien das Starten des Prozesses drinnen und dann überlappt sich deine Meldung mit meinem Programm. Könntest du das irgendwie einrichten?

Außerdem wie hast du es hinbekommen, dass bei der Sicherheitsabfrage, ob der Updater wirklich gestartet werden soll, nicht unbekannter Autor sondern dein Name steht?

Außerdem gibt es manchmal einen Bug, wenn ich bei einem Update einen Ordner im $appdata Verzeichnis erstellen lasse, dass der Inhalt, zb. Dlls die ich dazugeben, nicht gespeichert werden...

Mfg wizer
Maximilian
Hey wizer :-)
jau, ich Arbeite noch fleißig an meinem Updatesystem. Diesmal an einem größeren Update weshalb es hier relativ ruhig geworden ist. Ungefährer Releasetermin davon ist irgendwann in den nächsten 2-3 Wochen.
Eine kleine Roadmap was bereits implementiert wurde und was noch kommt ist hier zu finden:  Roadmap

Zitat:
Beispielsweise würde ich gerne steuern können, ob der Dialog, dass das Update erfolgreich verlaufen ist, angezeigt werden soll oder nicht.

Gibts schon, dass kannst du über die Eigenschaft autoCloseUpdateInstaller vom updateController regeln.

Zitat:
Denn ich habe direkt nach dem kopieren der Dateien das Starten des Prozesses drinnen und dann überlappt sich deine Meldung mit meinem Programm.

Das kann/sollte man eleganter lösen. Der updateController bietet die Eigenschaft restartApplication mit welcher die Anwendung welche das Update ausgelöst hat nach dem Update wieder gestartet wird.

Zitat:
Außerdem wie hast du es hinbekommen, dass bei der Sicherheitsabfrage, ob der Updater wirklich gestartet werden soll, nicht unbekannter Autor sondern dein Name steht?

Der updateInstaller ist digital Signiert. Deshalb wird nicht mehr "Unbekannter Herausgeber" sondern mein Name angezeigt. (s.  CodeSigning)

Wegen dem Bug werde ich mal schauen, dass ist so jedenfalls nicht gewollt.

Ansonsten vielen und viele Grüße, Maximilian
Patros46
Hallo,
erstmal danke für diesen grandiosen Assistenten. Genau so etwas habe ich gesucht.

Nun aber zu meinem Problem: Bei mir hakt es schon direkt zu Beginn. Ich verweise in meinem Projekt zunächst auf die angegebene .dll-Datei. Anschließend lade ich den updateController in die Toolbox. Wenn ich aber nun den updateController auf meine Form ziehe, so erhalte ich folgende Fehlermeldung:

Fehler: Der Typ- oder Namespacename "updateSystemDotNet" konnte nicht gefunden werden. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)

Und dazu noch diese Warnung:
Die Assembly "updateSystemDotNet.Controller", auf die verwiesen wird, konnte nicht aufgelöst werden, da sie eine Abhängigkeit von "System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" aufweist (nicht im aktuellen Zielframework ".NETFramework,Version=v4.0,Profile=Client" enthalten). Entfernen Sie Verweise auf im Zielframework nicht enthaltene Assemblys, oder weisen Sie das Projekt neu zu.

Was mach ich nur falsch? Ich bedanke mich schonmal im Voraus für eine Antwort.

MfG Patros46