Laden...

updateSystem.NET

Letzter Beitrag vor 12 Jahren 255 Posts 160.217 Views
updateSystem.NET
[b]Aktuelle Version:[/b] 1.5.1
[b]Produktseite:[/b] [url]updateSystem.NET[/url]
[b]Quellcode:[/b] [url]@github[/url]
[url]Download[/url]

[url]BugTracker[/url]
Gastaccount für den Bugtracker:
Benutzername: Gast
Passwort: gast123

[b]Unterstützte Betriebssysteme:[/b] Windows XP bis Windows 7
[b]Benötigte .Net Frameworkversion:[/b] 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

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.


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:

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

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

So, Fehler gefunden und behoben 😃 Das Update steht über die Updatefunktion vom Updatedesigner bereit.

Cheerio

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

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ß

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

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

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

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

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

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.

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:

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.

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

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.

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

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 😃

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

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

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.

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.

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

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

Hey Patros46,
der updateController unterstützt nicht das .NET Framework 4.0 Client Profile. Einfach in den Projekteinstellungen auf das volle 4.0 Framework umstellen. Dann klappts auch 😃

Cheerio

Aus deiner Roadmap:

Die Programmversion in der Registry kann nun bei einem Update automatisch auf die neueste Version gesetzt werden.

Im Moment nehme ich als Verison die Version der Hauptassembly, das hat natürlich nachteile, da diese bei jedem Update ersetzt werden muss.
Wo speicherst du die aktuelle Programmversion? Tatsächlich in der Registry? Dann ist man aber sehr von einem automatischen Installer abhängig, einfach mal einzelne ersetzten geht dann nicht.
Eine extra config Datei mit liefern welche die Programmversion enthält wäre auch noch eine Möglichkeit. Die lässt sich leicht mit updaten und ist im Notfall auch einfach von hand zu überprüfen / ändern.

Was sind da so deine bevorzugten Lösungen?
Wie ist das neue Feature mit der Registry realisiert?

P.s.: Nochmal dickes Lob, echt ein super Programm.

Moin Tarion,
also das Update der Versionsnummer in der Registry soll eigentlich nur dafür sorgen, dass a) die richtige Version in der Systemsteuerung steht und b) auch das Installationsprogramm weiß welche Version derzeit Installiert ist, falls dieses selbst eine zusätzliche Updateoption bietet.

Was sind da so deine bevorzugten Lösungen?

Ich lasse die aktuell Installierte Version immer aus der Hauptassembly aufrufen, da ich diese bei jedem Build eh automatisch erhöhen lasse ist der Aufwand für mich gleich 0 😃

Wie ist das neue Feature mit der Registry realisiert?

Recht simpel. Du gibst im updateDesigner die Installations-ID deiner Anwendung an und der updateInstaller ersetzt bei jedem Update in der Registry den entsprechenden Wert.

Ansonsten besten Dank und viele Grüße,
Maximilian

Kleiner Bug:

Wenn man im Wizard für das Erstellen eines php servers zurück und wieder vor geht, bleiben alle Daten erhalten, bis auf der Datenbankserver, der wird wieder auf localhost gesetzt.

Ist nicht sonderlich schlimm, nur die Fehlermeldung bei angabe eines falschen sql servers (bei mir ist er eben nicht localhost) führt zu einer verwirrenden Fehlermeldung.
Irgendwas mit Zeichen 2 in Zeile 2 oder so.

Und als kleines Feature könnte er sich die FTP Daten bis auf das Passwort merken. Würde die Projekterstellung noch angenehmer machen.

Dann ist das exportieren der Daten in die Zwischenablage ja super. Aber ich konfiguriere alles im code. Wäre toll wenn man das auch in einem FOrmat für dne Quellcode exportieren könnte. Kann sich ja alles auf die variable "updater" oder so beziehen.

Gruß, Tarion

Hallo Maximilian,

Die Programmversion in der Registry kann nun bei einem Update automatisch auf die neueste Version gesetzt werden.

dank für das Update. Ich habe es noch nicht ausprobiert, aber ich hoffe das der Registry-Eintrag optional ist. Im anderen Fall wären natürlich portable Applikationen, die ja ohne Installation funktionieren sollen, gefährdet.

Thomas

Hey Tarion,
um den Fehler mit dem Servernamen werde ich mich kümmern, eigentlich sollte das nicht passieren. Nungut, ist mit dem nächsten Update behoben.
Ich werde auch schauen, dass ich irgendwo die Zugangsdaten für die Server speichere, das haben schon einige bemängelt.

Dann ist das exportieren der Daten in die Zwischenablage ja super. Aber ich konfiguriere alles im code. Wäre toll wenn man das auch in einem FOrmat für dne Quellcode exportieren könnte. Kann sich ja alles auf die variable "updater" oder so beziehen.

Wird erledigt 😃

Hey Thomas,

dank für das Update. Ich habe es noch nicht ausprobiert, aber ich hoffe das der Registry-Eintrag optional ist. Im anderen Fall wären natürlich portable Applikationen, die ja ohne Installation funktionieren sollen, gefährdet.

Ich nutze meinen Updater selbst in portablen Anwendungen, deshalb achte ich auch immer darauf, dass er mit diesem Konzept auch Kompatibel ist. Wenn du im updateDesigner keine Installations-ID angibst, dann wird auch nichts in der Registry aktualisiert 😃

Cheerio

Und beim Testen ist uns noch eine kleinigkeit aufgefallen. Wenn man Restart Application einstellt und der Updater fertig ist, dann steht da das man den Updater nun schließen soll, dass die Anwendung danach neu gestartet wird ist in dem Moment nicht ersichtlich. Vielleicht den Button umbenennen oder sogar das Restarten optional machen.

Stimmt, dass ist wirklich nicht ersichtlich. Ich glaube ich werde das wie bei den Setups machen, dass man eine Checkbox hat in der ausgewählt werden kann ob die Anwendung nach dem Schließen gestartet werden soll. Danke für den Hinweis 😃

Cheerio

Ich hatte nun gestern etwas Zeit, das updateSystem daheim zu testen. Also eins schon mal vorweg: Es hat tadellos funktioniert, ohne Fehlermeldungen, und ich muss wirklich sagen, dass dir das Ganze echt gut gelungen ist.

Ein Anmerkung dennoch:

Es gibt leider keine Möglichkeit, einen Prozess nach dem Update wieder erneut zu starten, und dabei die ursprünglichen Commandline Parameter wieder mitzugeben. Soll heissen: Ich starte mein Anwendung mit

app.exe /x

Beim Start meiner Anwendung prüfe ich dann auf Updates, und führe diese dann gegebenfalls durch, und möcht anschliessend wieder meine app.exe aufrufen. Der Aufruf an sich ist ja kein Problem, aber der Parameter /x geht mir verloren.

Hey Jelly,
erstmal Danke für das Lob 😃

Es gibt im updateController direkt die Möglichkeit festzulegen, ob die Anwendung automatisch nach dem Update gestartet werden soll (restartApplication). Zusätzlich dazu kannst du mit der Eigenschaft autoCopyCommandlineArguments festlegen, ob dabei die übergebenen Parameter übernommen werden sollen. Ich denke, dass ist das was du suchst 😃

Cheerio

Hallo,
ich habe gerade deine Bibliothek ausprobiert und bin geradezu begeistert =)
Das klappt ja lles super! =)
Arbeitest du noch an dem Projekt? Ich hätte nämlich auf die Schnelle noch eine Verbesserung.
Nachdem die Updates heruntergeladen wurden entsteht eine relativ lange Pause bevor sie installiert werden.
Vielleicht könntest du dort noch ein kleines Fenster einbauen, dass zeigt, dass der Update-Vorgang noch läuft.

Ansonsten echt eine super Sache. =)

Hey Fabian,
erstmal Danke und jo, klar arbeite ich noch daran 😃
Wie lang ist denn diese Pause bei dir? Was nach dem Download noch durchgeführt wird, ist eine Überprüfung ob der updateInstaller korrekt heruntergeladen wurde und dann wird dieser eigentlich auch schon gestartet, eigentlich gibts da wenig was viel Zeit fressen würde...

Cheerio

Die Pause kann sich schon so über 5-10 Sekunden erstrecken.
Meistens aber so 3-4. War auch nur ein Vorschlag 😉
Ich schließe halt auch noch mein Programm vor dem installieren, deswegen ist dann erstmal gar nichts zu sehen.
Noch etwas:
Wenn ich eine Beta veröfefntliche, dann wäre es schön, wenn in dem Dialog "neues Update verfügbar" auch neben der Versionsnummer ein "Beta" stehen würde. =)

Ich hätte noch eine Idee:
Ich habe mir gerade ein kleines Programm geschrieben, welches die Unterschiede zweier Versionen heraussucht.
Also die Dateien miteinander vergleicht und dann ausgibt welche Dateien hinzugefügt, gelöscht oder modifiziert wurden.
Es wäre hilfreich, wenn der Updater-Ersteller eine Art API hätte, mit der man soetwas machen kann.
Also liest dein Programm eine Textdatei ein, in der nach gewissen Regeln die Dateien drin stehen.
Außerdem wäre es schön, wenn man beim hinzufügen von Dateien zum Update 1. mehrere hinzugefügte Dateien gleichzeitig löschen könnte und [ENTF] die Dateien auch löschen würde.

Eine weitere Idee: Die Möglichkeit zu jedem Projekt eine Verzeichnisstruktur anlegen zu können. Dann muss man nicht jedes Mal beim Update die ganze Ordner hinzufügen.

Im Anhang noch eine mögliche Ausgabe, die der Updater behandeln könnte.

Ich habe noch einen Bug gefunden.
Wenn ich ein Update erstelle und danach bearbeite,
dann zeigt er mir nicht mehr an, welche Dateien wohin
kopiert werden sollen. (s. Screenshot)

Außerdem wäre es noch schön, wenn der Focus beim
Erstellen eines neuen Verzeichnisses direkt auf der TextBox läge. =)

Hey Fabian,
wetterbedingt nun meine etwas verspätete Antwort 😃

Wenn ich eine Beta veröfefntliche, dann wäre es schön, wenn in dem Dialog "neues Update verfügbar" auch neben der Versionsnummer ein "Beta" stehen würde. =)

Ja, das wäre sicherlich nicht schlecht, werd ich übernehmen.

Ich habe mir gerade ein kleines Programm geschrieben, welches die Unterschiede zweier Versionen heraussucht.
Also die Dateien miteinander vergleicht und dann ausgibt welche Dateien hinzugefügt, gelöscht oder modifiziert wurden.
Es wäre hilfreich, wenn der Updater-Ersteller eine Art API hätte, mit der man soetwas machen kann.

Es gibt eine Kommandozeilenversion vom updateDesigner welche automatisiert Updates erstellen kann. Da gab es mit dem letzten Update ein paar Änderungen weshalb ich dafür erst die Infoseite überarbeiten muss. Könnteste dir aber schonmal anschauen: Kommandozeile. Die Änderungen beziehen sich nur auf den Changelogteil, diesen bitte vorerst ignorieren.

Eine weitere Idee: Die Möglichkeit zu jedem Projekt eine Verzeichnisstruktur anlegen zu können. Dann muss man nicht jedes Mal beim Update die ganze Ordner hinzufügen.

Das versteh ich nicht so ganz, könntest du das evtl. näher Erklären?

Ich habe noch einen Bug gefunden.
Wenn ich ein Update erstelle und danach bearbeite,
dann zeigt er mir nicht mehr an, welche Dateien wohin
kopiert werden sollen. (s. Screenshot)

It's not a Bug, it's a Feature! Das wollte ich schon immer mal sagen^^ Jedenfalls gibt es nur einen gewollten Grund das Dateien ausgeblendet werden, nämlich dann wenn diese nicht mehr an dem ursprünglichen Pfad existieren. Ist dem so? Ansonsten ist es wirklich ein Bug.

Cheerio

Hallo Maximilian,

ein sehr schönes Tool, ich habe es mal in Kürze ausprobiert, und jedoch habe ich ein Problem mit dem Proxy 😃 Ich bin mir aber nicht sicher ob das schon mal erwähnt worden ist, falls ja, verzeihe mir dass ich es nochmalig erwähne.

Und zwar habe ich ein Update erstellt und eine kleine Anwendung, die eben das Update erhalten soll. Wenn ich nun das Programm starte kommt korrekt der Dialog, jedoch beim Download (vermute es ist der Download) schreibt er mir ein Fehler bzgl. des Proxies hin (Benutzer darf nicht, Kennwort fehlt oder ähnliches).

Ist es irgendwie möglich, die Einstellungen vom IE zu übernehmen? Denn es kann ja sein, dass ich die Proxy Zugangsdaten nicht habe, der Benutzer jedoch hinter einem Proxy sitzt und dies trotzdem darf. 😃

Ich z.B. kann den download via IE ohne Probleme ausführen, das Problem besteht "nur" in deinem Programm. Proxy Einträge möchte ich, wie gesagt, vorher nicht festlegen müssen, da ich diese teilweise nicht kenne.

Gruß,
Lion

lg Lion

Hm, dass die Dateien nicht mehr vorhanden sind kann sogar wirklich sein... Ich werds auf jeden fall testen!

Mein aktuelles Projekt hat eine etwas größere Ordnerstruktur. (ca 12 Ordner)
Diese Ordner sind natürlich auch verschachtelt. Wenn ich jetzt eine Datei in
den letzten Ordner kopieren will muss ich erst zig Verzeichnisse im Updater
erstellen. Beim nächsten Update das selbe Spiel.
Deswegen solltest du die Verzeichnisse speichern.

Jetzt verständlich? Wenn nicht poste ich noch einen Screenshot.

Hey Lion,
also laut MSDN benutzt der WebClient automatisch die IE Settings wenn nichts anderes konfiguriert ist. Daher ist es etwas verwunderlich warum dies bei dir fehlgeschlagen ist. Ich werde mir mal lokal was zum testen aufsetzen und dann mal schauen wo es hängt 😃

Hey Fabian,
jo, jetzt habe ich es verstanden ^^ Dafür lasse ich mir etwas einfallen.

Cheerio

hier noch was

ein kleiner Schönheitsfehler, siehe Bild unten

Mal wieder ein Feature Request 😃

Wenn ich ein neues Update erstelle wäre es super wenn die Version des letzten Updates voreingestellt ist. Dann muss man nicht immer die ganze Version eingeben.
Ansonsten vielleicht die Version eines Updates änderbar machen, hab schon ab und an welche mit ner falschen Nummer ausgestattet und musste die dann komplett neu erstellen.

Hallo Maximilian,

erstmals 1000end Dank für das tolle UpdateSystem.
Ich habe das jetzt mal ausprobiert und muss sagen dass es echt gut funktioniert.

Ein paar Kleinigkeiten sind mir aber aufgefallen 😃

  • Update dialog -> Wenn man während dem Suchen auf Abbrechen klickt dann kommt fehler "Cannot access a disposed object. Object name: 'updateSearchDialog'."
  • Beim Erstellen von Updatepaketen können Dateien / Ordner nicht verschoben werden. d.h. Datei kann nicht direkt in ordner verschoben werden. Man muss die Datei löschen und am neuen Ort wieder hinzufügen -> ist etwas umständlich
  • Updaterprogram -> Fenster sind teilweise fixed size was etwas umständlich ist (besonders wenn man die Aktionen zum Updatepaket hinzufügt könnte man den Platz oft gut gebrauchen)
  • Ohne Internet kann kein Updateprojekt geöffnet werden. manchmal wäre es auch praktisch ein Updatepaket ohne Inet erstellen zu können um es dann nachher nur noch uploaden zu müssen
  • Wenn keine Inet-Verbindung bekommt man eine Fehlermeldung die für den Endbenutzer etwas zu kryptisch ist 😃
  • Statistikserver -> Bei der Eingabe von den Serverdaten wäre ein Einstellungen Testen knopf praktisch

Danke nochmals. So ein UpdateSystem hat die Welt noch gebraucht 😃

Grüsse
Michael

Hallo Tarion,
das fehlt mir selber, da werde ich mir was für einfallen lassen 😃

Hallo Michael,
erstmal Danke, hört man gerne 😃

  • Update dialog -> Wenn man während dem Suchen auf Abbrechen klickt dann kommt fehler "Cannot access a disposed object. Object name: 'updateSearchDialog'." Wird behoben. In meinen Tests ist die Updatesuche immer so schnell vorbei, dass ich da nie zu kam diesen Button zu drücken ^^'
  • Beim Erstellen von Updatepaketen können Dateien / Ordner nicht verschoben werden. d.h. Datei kann nicht direkt in ordner verschoben werden. Man muss die Datei löschen und am neuen Ort wieder hinzufügen -> ist etwas umständlich Verschieben habe in in der Tat komplett vergessen, das setz ich direkt mal auf die ToDo-Liste.
  • Updaterprogram -> Fenster sind teilweise fixed size was etwas umständlich ist (besonders wenn man die Aktionen zum Updatepaket hinzufügt könnte man den Platz oft gut gebrauchen) Ja, dass ist ein Manko was ich mit dem nächsten größeren Update ausräumen werde. Ich habe mir da etwas für einen neuen Dialog überlegt, mehr dazu ist in meinem Blog zu finden => DevNews #1
  • Ohne Internet kann kein Updateprojekt geöffnet werden. manchmal wäre es auch praktisch ein Updatepaket ohne Inet erstellen zu können um es dann nachher nur noch uploaden zu müssen Das ist schon schwieriger. Das ganze Programm baut quasi auf der direkten Kommunikation via FTP mit dem Server auf, das mal eben ändern ist schwierig. Ich kann nicht genau sagen wann, aber für später ist es definitv geplant verschiedene Deploymentmethoden zu integrieren, so dass Updates auch über das Netzwerk oder Dateisystem verteilt werden können.
  • Wenn keine Inet-Verbindung bekommt man eine Fehlermeldung die für den Endbenutzer etwas zu kryptisch ist 😃 Die Fehlerbehandlung werd ich auch noch optimieren, da habe ich ein paar sehr hilfreiche HowTo's in Microsofts UXGuide gelesen wie man es besser macht als bisher.
  • Statistikserver -> Bei der Eingabe von den Serverdaten wäre ein Einstellungen Testen knopf praktisch In der Tat, wird kommen.

Danke nochmal fürs Lob und die Hinweise, ich werde zusehen das ich das so schnell wie möglich umgesetzt bekomme 😃

Cheerio

Hallo Maximilian,

dein Updater gefällt mir sehr gut!

allerdings sind mir zwei sachen aufgefallen bzw. weiss ich nicht ob es beabsichtigt ist.

Wenn ich einen Statistik server hinzufüge, dann sehe ich erst am Ende ob ich einen Fehler bei meinen Eingaben gemacht habe (z.B. Datenbankhost), allerdings steht dort auch nicht welcher Fehler das ist 😄.

Die zweite Sache ist vielleicht beabsichtigt. Ich würde gerne die Dateien dort updaten lassen wo sie ausgeführt worden sind.

z.B. D:\Mein Programm\

das scheint mir bisher nicht möglich oder ?

Edit: Was auch interessant wäre, wenn ich aus einem vorhandenem update ein neues generieren könnte. Das ich dann alle einstellungen des vorherhigen habe und z.B. nur die Version ändern muss.

Edit 2: wenn ich nur eine Englische changelog eintrage kommt eine Messagebox das ich noch eine Changelog eintragen sollte 😃

Gruß André

Hey André 😃

Wenn ich einen Statistik server hinzufüge, dann sehe ich erst am Ende ob ich einen Fehler bei meinen Eingaben gemacht habe (z.B. Datenbankhost), allerdings steht dort auch nicht welcher Fehler das ist 😄.

Ja, das wurde 2 Posts weiter oben schon bemängelt. Durchaus zurecht. Das wird mit der nächsten Version behoben. Allerdings sollte bei Verbindungsfehlern mit dem SQL Server diese auch angezeigt werden...

Die zweite Sache ist vielleicht beabsichtigt. Ich würde gerne die Dateien dort updaten lassen wo sie ausgeführt worden sind.

Mh, das geht doch? Wenn du z.B. bei der Dateikopieraktion "Programmverzeichnis" auswählst, ist dabei das Verzeichnis gemeint, in welchem sich die Anwendung befindet welche das Update ausführt. Das ganze kann man aber relativ leicht mit dem "Programme"-Verzeichnis von Windows verwechseln fällt mir grade auf, hat dafür jemand einen besseren Vorschlag?

Zum Edit: Ist geplant.

Zum Edit2: Sollte nicht so sein und wird behoben.

Ich werde heute oder morgen ein kleines Bugfix Update herausbringen was zumindest die Fehler behebt. In 1-2 Wochen gibt es dann eine neue Version vom updateDesigner in welcher dann auch die Funktionsvorschläge umgesetzt werden.

Cheerio

So, wie angekündigt habe ich eben ein kleines Update veröffentlicht welches die folgenden Änderungen beinhaltet:

  • Versionsspalte in der Updateübersicht passt sich der länge dem Inhalt an.
  • Initialisierung von releaseInfo mit 0 als releaseStep ist nicht mehr möglich. Dies führte zu einer fehlerhaften Updatesuche.
  • Im Assistenten für ein neues Updateprojekt kann ausgewählt werden ob es sich bei dem neuen Updatepaket um ein Service Pack handelt.
  • Das Ändern der Versionsnummer in der Registry funktioniert jetzt auch auf 64-Bit Systemen zuverlässig.
  • Fehler beim Abbruch des Suchdialoges

Außerdem gibt es neue Informationen zu dem nächsten größeren Update: updateSystem.NET - DevNews #2

Das Update werde ich mir später mal anschauen.

Hab aber noch was entdeckt.

Ich benutze zurzeit Major.Minor.Build.TimeStamp für die Versionierung

Version aufm server zurzeit 2.7.1.2104 nachm kompilieren 2.7.4.1823

Das programm denkt es würde ein Update anstehen obwohl ja build 5 neuer ist 😃

Das kannst du ja vielleicht einstellbar machen im Control.

Edit: das lag wohl daran das ich nur File Version hochgezählt habe, jetzt funktioniert es wie es soll.

Gruß André 😃

Hi!

Dein Projekt macht wirklich einen sehr guten Eindruck. Leider bekomme ich es nicht zum Laufen.

ZUR INFO: Es geht um ein VSTO Outlook AddIn. In einer einfachen Testform mit .NET 3.5 läuft es einwandfrei!

Ich bekomme folgenden Fehler:

bei updateSystemDotNet.Internal.Log.writeHeader() in S:\Sources\UpdateSystem.Net\Source\updateController\Internal\Log.cs:Zeile 49.

In der Zeile "updateController1.updateInteractive();" kommt es dann zu eine NullReferenceException => Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Kannst du mir einen Tipp geben, was ich falsch mache? Ich habe ein Projekt erstellt, Testweise ein Updatepaket erstellt und alle möglichen Properties des UpdateController1 geändert - leider alles ohne Erfolg.

Vielen Dank!

Grüße
Fabian

Hallo Maximilian,

wollte nochmal Danke sagen!

Eine Sache habe ich noch, die Statistik ist wohl ein wenig buggy.
Ich habe dort keinen Graphen, es liegt denke ich an der anzahl, bei einer anzahl von 4 gehts zurzeit. Ausserdem sind links ein paar zahlen in einander 😃

André

Hallo Fabian,
erstmal Sorry, leider ist dein Post bei mir irgendwie untergegangen, jedenfalls lese ich ihn jetzt erst. Ist wohl Streßbedingt. Zu deinem Problem:
Das ist komisch, liegt vermutlich an dem Addin bzw. dessen Host da ich über diesen ein paar Informationen auslese kracht es da weil dieser anscheinend nicht vorhanden / kein .NET Assembly ist. Ich werde mir dafür mal was einfallen lassen.

Hey André,
ja das Problem ist bekannt, tritt auch nur bei hohen Werten auf und wird mit dem nächsten Minorupdate behoben 😃

wollte nochmal Danke sagen!

Bitte 😃

Schönes WE und viele Grüße,
Maximilian