Laden...

updateSystem.NET

Erstellt von Maximilian vor 14 Jahren Letzter Beitrag vor 11 Jahren 159.446 Views
Maximilian Themenstarter:in
238 Beiträge seit 2007
vor 13 Jahren

Hallo zusammen,
es gibt wiedermal ein paar Informationen zu dem nächsten größeren Update, zu finden bei mir im Blog:
updateSystem.NET - DevNews #3

Leider nur Text und Bilder, aber eine erste Beta der neuen Version ist auch nicht mehr weit.

Wie dort zu lesen ist, suche ich ambitionierte Tester für die ersteren Betaversionen. Ich selber teste natürlich auch mit einigen unterschiedlichen FTP- SQL-Server konstellationen, aber alles kann man einfach nicht abdecken, und besonders jetzt während meiner Ausbildung fehlt mir da auch etwas die Zeit für, ich komme derzeit leider auch kaum zum privaten Entwickeln. Wer Lust und Zeit hat kann sich gerne bei mir melden, wie ist mir egal 😃 Vielen Dank!

Cheerio

Wat fürn Zufall (ehrlich^^), vor genau einem Jahr habe ich diesen Thread hier erstellt 😃

B
375 Beiträge seit 2007
vor 13 Jahren

Ich interessiere mich sehr für dieses Projekt und habe gerade versucht das Updatefeature in eine meiner Anwendungen zu implementieren.

Dabei habe ich allerdings das Problem, dass beim Ausführen des Updates (updateInteractive) der Fehler kommt:


updateSystem.NET

Während der Updatesuche ist folgender Fehler aufgetreten: Die Datei "D:\update.xml" konnte nicht gefunden werden.

Kann jemand etwas damit anfangen, woran es liegen könnte?

Ich habe über die GUI ein Projekt erstellt und den Projektcode in den UpdateController kopiert, der in meiner Anwendung existiert.

thx

Maximilian Themenstarter:in
238 Beiträge seit 2007
vor 13 Jahren

N'abend baer999,
der Fehler sagt eigentlich schon alles, da stimmt was mit der Url zu dem Server nicht, auf den du via FTP die Updates geschubst hast, dass kann definitv nicht D:\ - sondern sollte viel mehr eine HTTP(S) Adresse sein. Was hast du denn als Url angegeben?

Cheerio

B
375 Beiträge seit 2007
vor 13 Jahren

Also beim Prüfen der URL kommen folgende Fehlermeldungen:


Fehler bei der Überprüfung

Bei dem Versuch die Url zu verifizieren ist folgender Fehler aufgetreten:

Der Server hat eine Protokollverletzung ausgeführt.. Section=ResponseStatusLine


Fehler bei der Überprüfung

Bei dem Versuch die Url zu verifizieren ist folgender Fehler aufgetreten:

Der Remoteserver hat einen Fehler zurückgegeben: (530) Nicht angemeldet.

Mit meinen Serverdaten kann ich mich einloggen bei Filezilla und auch über die GUI des .NET Updaters, aber sobald ich dann diese Update-URL prüfen will (über das blaue Label rechts daneben) kommen diese Fehlermeldungen... woran könnte das liegen? thx

Maximilian Themenstarter:in
238 Beiträge seit 2007
vor 13 Jahren

Was hast du denn als Url angegeben? Die Kommunikation im updateDesigner erfolgt via FTP, der updateController kommuniziert aber via HTTP. Daher sollte die Url in etwa folgendes Format besitzen: http://meineTolleDomain.de/meineAnwendung/updates/
Diese musst du dann natürlich auch im updateController angeben.

22 Beiträge seit 2008
vor 13 Jahren

Hi,

ist dein Updater auch mit WPF Anwendungen kompatibel?
Weil ich habe zur zeit das Problem, dass ich Ihn nicht in meine Toolbox bekomme.
Wenn ich es so versuche wie von dir beschrieben, dann bekomm ich immer eine Fehlermeldung.

In "C:...\updateSystemDotNet.Controller.dll" sind keine Komponenten vorhanden, die in der Toolbox positioniert werden können.

Irgendeine Idee?

MfG dbl00

Maximilian Themenstarter:in
238 Beiträge seit 2007
vor 13 Jahren

Hey double00,
ich fürchte das Problem liegt an dem nicht vorhandenen WPF Support. Ob, und wenn ja wann ich WPF unterstütze weiß ich noch nicht und möchte mich da derzeit mangels Zeit nicht festlegen. Sorry.

Cheerio

3.430 Beiträge seit 2007
vor 13 Jahren

Hallo zusammen,

ich habe das UpdateSystem ohne Probleme in einer WPF Anwendung verwendet.
Die Toolbox verwende ich ohnehin nie deshalb kann ich nicht sagen, ob man es einbinden kann oder nicht.

Jedenfalls habe ich einfach den Verweis auf die DLL hinzugefügt und dann ein neues UpdateController (oder so ähnlich) Objekt erstellt und ein paar Properties gesetzt.

Dann hat es schon problemlos geklappt.

Gruss
Michael

Maximilian Themenstarter:in
238 Beiträge seit 2007
vor 13 Jahren

Tatsache? Ich dachte WinForms wären zu WPF nicht kompatibel ... egal ... Werd ich mich dann doch mal zumindest ans Testen machen müssen um zu sehen was alles geht und was nicht.

3.430 Beiträge seit 2007
vor 13 Jahren

Hallo,

Tatsache? Ich dachte WinForms wären zu WPF nicht kompatibel ... egal ... Werd ich mich dann doch mal zumindest ans Testen machen müssen um zu sehen was alles geht und was nicht.

In WPF kann man ohne Probleme deinen WinForms-Dialog anzeigen lassn.
z.B. gibt es in WPF noch keinen OpenFileDialog (ausser von dritterherstellern) stattdessen verwendet man einfach immer noch die WinForms-Variante
In deinem Fall sehe ich da keinen Bedarf dass man dein UpdateSystem auch in WPF machen sollte.

Wwenn man direkt in einem WPF Fenster ein WinForms Control einfügen will dann ist es etwas umständlicher.
Aber selbst das ist mit dem WinFormHost kein Problem
Hier ein Beispiel: Integration of WinForms in WPF Applications

Gruss
Michael

6.862 Beiträge seit 2003
vor 13 Jahren

Hallo,

.. z.B. gibt es in WPF noch keinen OpenFileDialog (ausser von dritterherstellern) stattdessen verwendet man einfach immer noch die WinForms-Variante

Das ist nicht wahr. Für WPF befindet sich der OpenFileDialog im Microsoft.Win32 Namespace. Aber ganz falsch ist die Aussage auch nicht, da beide Dialoge nur nen Wrapper um die WinApi sind, und daher schon fast das gleiche 😉

Zum Thema: Wie michlG schon gesagt hat ist es problemlos möglich ganze Fenster der jeweils anderen GUI-Technologie anzeigen zu lassen. Unter Umständen muss man aber die jeweilig Applikation durch aufrufen der Run Methode starten, da unter Windows Forms z.B. sonst keine Window Messages etc. verarbeitet werden.

Selbst wenn die Windows Forms Anwendung tut in WPF, sollte man trotzdem ne WPF Lösung präferieren weil man so nicht die, fürs eigentliche Programm an sich irrelevanten, Abhängigkeiten zu Windows Forms hat.

Baka wa shinanakya naoranai.

Mein XING Profil.

22 Beiträge seit 2008
vor 13 Jahren

ich fürchte das Problem liegt an dem nicht vorhandenen WPF Support. Ob, und wenn ja wann ich WPF unterstütze weiß ich noch nicht und möchte mich da derzeit mangels Zeit nicht festlegen. Sorry.

Hi,

danke für deine Antwort. Muss ich damit leben 😉

Und habe es gerade auch mal so ausprobiert wie es michlG gesagt hat und muss sagen, dass es tadellos funktioniert.

Grüße dbl00

B
375 Beiträge seit 2007
vor 13 Jahren

So habe meine Probleme jetzt soweit gelöst, aber da kommt schon das nächste : )

Ich habe meine Anwendung im aktuellen Stand als Version 1.0.0.0 als Updatepaket einem Projekt hinzugefügt. Das habe ich dadurch gemacht, dass ich "Dateien kopieren und ersetzen" ausgewählt habe und die Exe in einen Ordner im Appverzeichnis hinzugefügt habe, ist das so korrekt?

Anschließend habe ich eine neue Version compiliert und ein neues Updatepaket (1.0.0.1) geschnürt. Die neue Exe als "Dateien kopieren und ersetzen" Dateil hinzugefügt und abgeschlossen.

Allerdings wird beim Updatesuchvorgang jetzt immer gesagt ich habe mit der 1.0.0.0 immer noch die aktuellste Version, obwohl schon zwei Versionen auf dem Server liegen...

woran kann das liegen, was könnte ich falsch gemacht haben?

Außerdem wollte ich mal noch wissen, ob man die "Update.xml" auch woanders als im Root Verzeichnis der verwendeten Festplatte ablegen kann? thx

Maximilian Themenstarter:in
238 Beiträge seit 2007
vor 13 Jahren

Hey bear999,

Ich habe meine Anwendung im aktuellen Stand als Version 1.0.0.0 als Updatepaket einem Projekt hinzugefügt. Das habe ich dadurch gemacht, dass ich "Dateien kopieren und ersetzen" ausgewählt habe und die Exe in einen Ordner im Appverzeichnis hinzugefügt habe, ist das so korrekt?

Vom Vorgehen her eigentlich schon, aber wenn 1.0.0.0 die Initialversion ist, dann musst du diese nicht im updateDesigner anlegen. Die hat der Benutzer ja dann automisch schon via Setup, oder wie auch immer du deine Anwendungen verteilst, bezogen 😃

Allerdings wird beim Updatesuchvorgang jetzt immer gesagt ich habe mit der 1.0.0.0 immer noch die aktuellste Version, obwohl schon zwei Versionen auf dem Server liegen...

Hm, dass ist komisch. Hast du evtl. bei dem neuen Updatepaket den Releasetyp auf Beta oder Alpha gestellt?

Außerdem wollte ich mal noch wissen, ob man die "Update.xml" auch woanders als im Root Verzeichnis der verwendeten Festplatte ablegen kann?

Öhm ... das ist die Sache des FTP Servers wo er auf dem Server das Rootverzeichnis definiert. Natürlich kannst du auch die Updatedateien in Unterordner auf dem Server packen. Die müssen dann natürlich auch via HTTP erreichbar sein. Was nutztn du als FTP-Server Software?

Cheerio

B
375 Beiträge seit 2007
vor 13 Jahren

Ich habe immer noch Probleme beim Automatischen Update, ich habe hier im Screenshot mal einige Infos zusammengefasst:

Der Fehler "D:\Update.xml" kommt immer, sobald ich diese Datei aus dem D:\ Verzeichnis herausnehme, ansonsten sagt mir der Updater ich habe mit der 1.0.0.0 die neueste Version...

Die Daten habe ich für den Server alle vollständig angegeben, deshalb wundere ich mich, dass diese Update.xml nicht auch dort abliegt, sondern im D:\ Verzeichnis.

Ich vermute mal, dass deshalb die Version 1.0.0.1 nicht korrekt als neueste Version erkannt wird. Oder wie funktioniert das Programm grundsätzlich, also welche Datei wird geprüft wegen den Versionen?

Vielen Dank

Achja hier mein Quellcode zum Update aufrufen:

        private void aufUpdatesÜberprüfenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            updateController1 = new updateSystemDotNet.updateController();
            updateController1.checkForUpdatesDialog();
        }
A
18 Beiträge seit 2010
vor 13 Jahren

Hi, ich habe ein Problem mit der Konfiguration des Updaters.

Wenn ich bei Update-URL meine Domain eintrage, die auch existiert!

Bekomme ich immer folgende Fehlermeldung wenn ich sie prüfen will:

Es ist ein Fehler aufgetreten!
updateSystemDotNet.Designer.base.designerActionExeption: Der Remoteserver hat einen Fehler zurückgegeben: (550) Datei nicht verfügbar (z.B. nicht gefunden oder kein Zugriff).

Aber welche Datei ist den nicht verfügbar? Welche muss denn dahin?

Bin die Sache mit dem Assistenen Xmal durchgegangen und es will einfach nicht funktionnieren.

Und überhaupt eine Frage zu dem System, was soll das eigentlich, mit FTP und HTTP, wo kommen den nun letztendlich die Updates drauf und wieso kann man nicht HTTP oder FTP verwenden, anstatt beides gleichzeitig?

Maximilian Themenstarter:in
238 Beiträge seit 2007
vor 13 Jahren

Hey baer,
dein Aufruf ist falsch, du erstellt dabei ja eine komplett neue Instanz des updateControllers welche logischer Weise nicht die Url oder sonst welche Einstellungen kennt. Warum er dann allerdings von D:\ ausgeht finde ich sehr mysteriös. Versuche es einfach nochmal aber nimm die erste Zeile mit dem new updateController() raus. Daran wird es vermutlich auch liegen das er keine Updates findet.
Du solltest auch den letzten Aufruf durch updateController1.checkForUpdatesInteractive() ersetzen, denn mit deiner Variante erscheint ausschließlich der "Update suchen"-Dialog aber nichts weiter 😃

Ich vermute mal, dass deshalb die Version 1.0.0.1 nicht korrekt als neueste Version erkannt wird. Oder wie funktioniert das Programm grundsätzlich, also welche Datei wird geprüft wegen den Versionen?

Es gibt zwei Möglichkeiten wie der updateController die aktuelle Version ermitteln kann:
1: Du gibst sie fest in der Eigenschaft releaseInfo.Version des updateControllers an.
2: Du setzt die Eigenschaft retrieveHostVersion des updateControllers auf True. Dabei wird dann automatisch die Version des aufrufenden Assemblies verwendet.

Hi Alfons,
deine letzte Frage mal zuerst um Mißverständnissen vorzubeugen:

Und überhaupt eine Frage zu dem System, was soll das eigentlich, mit FTP und HTTP, wo kommen den nun letztendlich die Updates drauf und wieso kann man nicht HTTP oder FTP verwenden, anstatt beides gleichzeitig?

Der updateDesigner verwendet zur kompletten Kommunikation mit dem Server ausschließlich FTP. Warum du dann aber eine HTTP Url während der Einrichtung und in den Einstellungen angeben musst? Dies dient nur der Erleichterung bei dem Kopieren der Einstellungen in die Zwischenablage und dann in den updateController. Für den updateDesigner ist diese Information nicht relevant. Man kann es also darauf reduzieren: updateDesigner: FTP only. updateController: HTTP only.

Bekomme ich immer folgende Fehlermeldung wenn ich sie prüfen will:

Wann genau bekommst du diese? Beim erstellen, beim öffnen oder ganz wo anders?

P.S.: Du bist nicht der, der mir Heute Nachmittag ne E-Mail geschrieben hat? Der Text kommt mir zum Teil so bekannt vor...

A
18 Beiträge seit 2010
vor 13 Jahren

Achso, danke für den Hinweis

Beim Erstellen mit dem Assistenten, wo man am Anfang die URL Angeben muss, ist alles in Ordnung, auch bei dem FTP Server. Nun habe ich die Sache mit dem Zwischenspeicher und dem Laden in Visual Studios auch hingekriegt.
Das heißt das Projekt ist ohne Fehlermeldung erstellt worden.

Wenn ich aber nun bei dem fertig erstellten Projekt, in dem Reiter "Informationen" auf Adresse überpüfen klicke, kriege ich eben diese Fehlermeldung.
Auch wenn ich ein Update hinzufügen will, im Reiter "Updates" kriege ich die Fehlermeldung.

Was ich irgendwie merkwürdig finde.

Und achja der Pfad ist mit http:// angegeben

Ja genau der bin ich 😉, ich dachte nur, ich setze meine Frage zusätzlich nochmal ins Forum hier rein

Maximilian Themenstarter:in
238 Beiträge seit 2007
vor 13 Jahren

Hmm, du bekommst bei der Überprüfung und bei dem Erstellen von Updates exakt die gleiche Fehlermeldung? Das find ich recht merkwürdig. Dieser 550-Serverfehler ist mir leider sogar bekannt. Es gab schon ein paar wenige die den auch bekamen. Allerdings gelang es mir bis jetzt noch nicht diesen Fehler in irgendeiner Weise nachzuvollziehen- bzw. reproduzieren zu können. Das ist das blöde. Hast du in der FTP-Adresse evtl. Leer- oder andere Sonderzeichen?

Ok, gut das ich gefragt habe, sonst hätte ich dir zwei Mal geantwortet ^^

A
18 Beiträge seit 2010
vor 13 Jahren

Nein, es ist eine "gewöhnliche" und Leer- und Sonderzeichen.

Die FTP Verbindung klappt ja auch Einwandfrei, er erkennt den Pfad mit der richtigen Authentifizierung. Was mich da aber stutzig macht, das er beim hinzufügen der Updates die HTTP-Adresse verlangt...

Oder mal andersrum, was versucht er denn von der HTTP-Adresse zu bekommen?
Weil verfügbar ist sie auf jedenfall, habe es auch mal direkt aus dem Root-Verzeichnis der URL probiert, aber leider auch ohne Erfolg. Kann man die Dateien die er sucht vielleicht manuell dahin kopieren?

Oder kann es sein, das man neben dem Port 80 noch einen anderen braucht? Weil das ganze ist ein Linux-Server mit Apache2. Dann könnte es vielleicht an den Berechtigungen liegen.

B
375 Beiträge seit 2007
vor 13 Jahren

Wie kann sich der Updater die Version richtig merken, damit er auch nur wirkliich neue Versionen als "zu-installieren" markiert?!

Ich lege bei den Aktionen einen Schlüssel in der Registry an, was muss ich bei den Übergabewerten eingeben und wie kann ich die Installation ID herausfinden? Ändert sich diese ID auf anderen PCs?

Maximilian Themenstarter:in
238 Beiträge seit 2007
vor 13 Jahren

Hallo Alfons,

Was mich da aber stutzig macht, das er beim hinzufügen der Updates die HTTP-Adresse verlangt...

Warum das so ist, habe ich ja bereits ein paar Posts weiter oben erklärt, der Designer verwendet diese ausschließlich beim Kopieren in die Zwischenablage.

Bei der Prüfung wird nur geschaut ob die update.xml an der Adresse existiert. Also wenn du deine Updates nach http://meineurl.de/meineApp/updates schiebst wird geschaut ob http://meineurl.de/meineApp/updates/update.xml existiert. An den Ports kann es auch nicht liegen, die Prüfung läuft über den Standard 80er Port.

Wie gehst du denn ins Internet (DSL, Surfstick, etc.), neulich hatte ein bekannter ein ähnliches Problem und da lag das an der UMTS Verbindung das sich der FTPClient nicht verbinden konnte bzw. genau diese Fehlermeldung geschmissen hat. Kurioser Weise hat das da funktioniert wenn zur gleichen Zeit ein "Ping" lief.

Hallo baer999,

Wie kann sich der Updater die Version richtig merken, damit er auch nur wirkliich neue Versionen als "zu-installieren" markiert?!

In dem du ihm die aktuelle Programmversion übergibst?!? Setze einfach die bereits erwähnte Eigenschaft retrieveHostVersion auf True, dann wird immer die Version verwendet, welche du im Visual Studio unter den Projekteigenschaft angibst.

Ich lege bei den Aktionen einen Schlüssel in der Registry an, was muss ich bei den Übergabewerten eingeben und wie kann ich die Installation ID herausfinden? Ändert sich diese ID auf anderen PCs?

Was meinst du für Übergabewerte?
Die Installations ID ist die einmalige Kennung deiner Anwendung in den Uninstallinformationen in der Registry, die wird vom Installationsprogramm vergeben und ist auf jedem PC gleich. Welche Anwendung nutzt du denn für die Erstellung deiner Setups?

Cheerio

A
18 Beiträge seit 2010
vor 13 Jahren

Ne, ich gehe ganz normal ohne UMTS ins Internet.

Bin momentan nicht Zuhause, aber ich meine, in der FTP-Adresse wäre so eine Update.xml, das heißt wenn ich Zuhause bin, probier ich mal die Datei dahin zu schieben

EDIT:

Also, ich habe nun einmal die update.xml und den Ordner updates von dem FTP-Server auf den HTTP Link kopiert, mit dem Ergebnis, dass er nun sagt, "der Link ist erfolgreich gepürft worden", wenn man auf "Adresse überprüfen" im Menü klickt.
Weiterhin kann man aber keine Updates erstellen.

Und bei dem Knopf Datei ; updateInstaller aktualisieren, gibt es auch die Fehlermeldung 550 Datei nicht verfügbar (z.B. nicht gefunden oder kein Zugriff)

H
103 Beiträge seit 2010
vor 13 Jahren

Hey,
ich habe eine generelle Frage zu dem Updatesystem.

Angenommen ich liefere eine Applikation von mir an diverse Kunden in einem Installationsfile aus. Nach einiger Zeit ergeben sich dann diverse Bugs (und Bugfixes), so dass ein Update ansteht.

Mit deiner Komponente kann ich ja, wenn ich das richtig sehe, einzelne Dateien austauschen und hinzufügen. Kann ich dann zum Beispiel auch einfach die .exe oder eine .dll mit deinem System ersetzen? Hätte das dann den gleichen Effekt, wie wenn ich ein neues, komplettes Installationsfile (mit den Bugfixes) erstellen würde und sich ein Kunde dieses dann installiert (also quasi eine komplette Neuinstallation)? Oder muss man dabei noch irgendetwas beachten?

Vom Handling her gefällt mir die Komponente sehr gut, auch wenn es ein paar Probleme beim Löschen/Zurückziehen gibt. Bekomme dabei sporadisch Fehlermeldungen, aus denen ich nicht so ganz schlau werde (zum Beispiel: "Falsche Befehlesreihenfolge"), aber bisher hat es nach ein paar Versuchen oder nach einem Neustart immer funktioniert.

PHP Tutorials zum PHP lernen

3.430 Beiträge seit 2007
vor 13 Jahren

Hallo,

mit dem UpdateSystem kopiert man in der Regel einfach die DLLs / Exe vom Programm.
Ich liefe das Programm auch immer mit einem Setup aus.
Danach kann man die Dlls einfach austauschen, ohne dass es Probleme gibt.
Natürlich müssen dann jedes mal wenn der User das Setup neu installiert die Updates gezogen werden.
Aber das ist wohl nicht das Schlimmste 😉

Gruss
Michael

Maximilian Themenstarter:in
238 Beiträge seit 2007
vor 13 Jahren

Hallo zusammen 😃
wer Interesse hat, kann sich ab Heute immer die neueste Vorabversion von der neuen (hoffentlich bald) erscheinenden Version 1.5 von folgender Website mopsen:
updateSystem.NET Preview

Vorab aber eine Warnung: Die Website und vor allem die dort angebotene Version befinden sich noch in der Entwicklung, es gibt Funktionen die optisch schon vorhanden sind, aber noch keine Funktion besitzen. Das ist bekannt und wird im Laufe der Entwicklung immer weniger werden 😉 Es fehlen auch noch einige Prüfungen auf valide Daten, daher daraus resultierende Fehler bitte ignorieren.

Wer wissen möchte was sich in dieser Version verändert hab, kann einen Blick auf die neuen Release Notes werfen.

Angehangen habe ich noch einen Screenshot der neuen Verwaltungsoberfläche.

Über Feedback würde ich mich freuen 😃 Cheerio

A
18 Beiträge seit 2010
vor 13 Jahren

Hier funktioniert es ohne eine Fehlermeldung von wegen, Server nicht erreichbar und so, merkwürdig... egal, lass es nun einfach so, sonst geht es vielleicht hinter nicht mehr bei mir 😄

Sieht auf jedenfall richtig gut aus, meinen Respekt!

Jetzt muss ich es nur noch in mein Projekt integrieren, aber das mach ich morgen oder so.

Z
403 Beiträge seit 2007
vor 13 Jahren

Hallo Maximilian,

das sind Gute Nachrichten, ich werde im laufe der Woche die Version einmal ausführlich testen und dir melden was verbessert werden kann 😃

André

A
18 Beiträge seit 2010
vor 13 Jahren

Also ich habe nun mal Mithilfe deiner Beispielanwendung die ganze Geschichte in mein Projekt integriert. Nun versucht aber aber irgendwie immer, die Updates von der HTTP-Adresse zu laden!

Ich habe es mit dem neuen Beta Tool gemacht, denn bei dem kann ich keine Updates erstellen wegen der Fehlermeldung. Bei dem neuen geht es wohl ganz wunderbar.
Also habe ich einfach Projekt-ID und Schlüssel angepasst und wollte schauen ob die Updatefunktion geht. Aber sie funktioniert nicht... Er versucht immernoch das ganze von dem HTTP-URL zu laden...

Wenn ich die Sachen die der Designer auf den FTP-Server uppt auf den HTTP-Server verschiebe. Funktioniert das Update problemlos. Ohne meckern...
Dann habe ich versucht die Update-Url im Eigenschaftsmenü von updateController1 in meinem Projekt durch die FTP Adresse zu ersetzen, da kommt dann die Meldung Nicht angemeldet. Auch wenn ich oben die Logindaten zum FTP-Server angebe kommt nix gescheites bei raus...

Als Übergang kopiere ich die erstellten Updates von FTP nach HTTP, aber könntest du dem Problem bitte mal auf dem Grund gehen? Oder mir zumindest mal ein paar weitere Tipps geben wie ich die Updates gleich vom FTP kriege?

Wäre nett... und trotzdem echt super Arbeit!

Maximilian Themenstarter:in
238 Beiträge seit 2007
vor 13 Jahren

Hey Alfons,

Als Übergang kopiere ich die erstellten Updates von FTP nach HTTP, aber könntest du dem Problem bitte mal auf dem Grund gehen? Oder mir zumindest mal ein paar weitere Tipps geben wie ich die Updates gleich vom FTP kriege?

Ich verstehe nicht warum du überhaupt etwas umkopieren musst/willst.
Der FTP-Ordner welchen du im Designer/Administration angibst muss auf den gleichen Ordner zeigen, auf die die HTTP-Url zeigt die du im updateController angibst. Dann klappt dat auch.

A
18 Beiträge seit 2010
vor 13 Jahren

o.O Achso, das war mir nicht klar... das sind bei uns zwei verschiedene Server... und aus technischen Gründen lässt sich das auch nicht ändern...

Also muss ich ein Synchronisationsscript schreiben, was immer die beiden Verzeichnisse abgleicht, oder fällt einem ne andere Lösung ein?

Maximilian Themenstarter:in
238 Beiträge seit 2007
vor 13 Jahren

Aber wie bekommt ihr denn Daten auf den Server der nur via HTTP erreichbar ist?

A
18 Beiträge seit 2010
vor 13 Jahren

Der ist ja in einem Netzwerk mit meinem PC, also über Samba Freigaben.
Bis jetzt gab es keinen Grund die Sachen auch außerhalb ändern zu können.

Werde aber nun trotzdem mal versuchen, einen FTP Server paralell zu dem HTTP laufen zu lassen

EDIT:

😮 Ich richte mir einfach einen kostenlosen Webspace dafür ein!

EDIT2:
OK, nun klappt es soweit einwandfrei... lag wohl wirklich daran, das FTP und HTTP getrennt waren. Ist mir nicht klar gewesen. Vielleicht könntest du ja in dem neuen Update da irgendwie drauf hinweisen, um dem nächsten User so eine Plackerei zu ersparen, nur als Vorschlag von mir aus!

J
1.114 Beiträge seit 2007
vor 13 Jahren

lag wohl wirklich daran, das FTP und HTTP getrennt waren. Ist mir nicht klar gewesen. Vielleicht könntest du ja in dem neuen Update da irgendwie drauf hinweisen, um dem nächsten User so eine Plackerei zu ersparen

Ich denke, das sollte eigentlich jedem klar sein, oder?
Wenn ich es per FTP irgendwo hochlade, und später über HTTP darauf zugreife, ist doch aber wohl klar dass das nur gehen kann, wenn du auf den gleichen Path auf dem gleichen Server verweist.

A
18 Beiträge seit 2010
vor 13 Jahren

Wir werden sehen.... es war ja auch nur ein gut gemeinter Hinweis und keine Kritik in solchem Sinne, also kein Grund gleich so zu reagieren

Maximilian Themenstarter:in
238 Beiträge seit 2007
vor 13 Jahren

Hey Alfons,
ich seh das so wie Jelly, hab eigentlich immer gedacht das wäre klar. Deshalb habe ich mich auch etwas schwer getan um dein Problem zu verstehen 😉
Ich denke um Mißverständnisse später zu vermeiden werd ich das in den FAQs auf der neuen Website erwähnen.

Cheerio

U
208 Beiträge seit 2008
vor 13 Jahren

Hallo Maximilian,

ist es denn für deinen Updater zwingend nötig, dass die Updatepakete per FTP auf den Updateserver gelangen?
Ich habe vor einiger Zeit in meiner Firma in einem Projekt deinen Updater einbauen wollen, bin aber dann daran gescheitert, dass ich keinen FTP-Zugriff auf den Server habe (während ich aber über das interne Netzwerk mich auf dem Webserver anmelden und dort auch beliebige Dateien ablegen kann, die dann anschließend per HTTP-Protokoll erreichbar sind).
Mit deinem Update-Assistenten bin ich damals aber nicht sehr weit gekommen, weshalb ich dann zu einer kommerziellen Lösung gegriffen habe.
Ich denke das ist eine Schwäche deines Updaters, die eigentlich mit relativ geringem Aufwand behoben werden könnte? Nämlich, dass das entscheidende das Erstellen der Updatepakete sein sollte und das anschließende Hochladen auf den Server über das FTP-Protokoll nur eine von mehreren Alternativen wäre. Was hältst du von diesem Vorschlag?

Grüße,
Andreas

Maximilian Themenstarter:in
238 Beiträge seit 2007
vor 13 Jahren

Hey Andreas,

Ich denke das ist eine Schwäche deines Updaters, die eigentlich mit relativ geringem Aufwand behoben werden könnte?

Mit geringem Aufwand wäre eine solche Änderung leider nicht verbunden. Ich hatte bei der Konzeption damals nur FTP im Kopf weshalb die komplette Anwendung mehr oder weniger darauf aufbaut. Deshalb kann ich das nicht "mal ebend" ändern.
Ich habe schon einiges an Ideen für Version 2.0 wozu auch ein durchdachteres Publishingmodell zählt, aber bis dahin ist ein FTP-Server eine Pflichtvoraussetzung um Updates hochladen zu können.

Cheerio

U
208 Beiträge seit 2008
vor 13 Jahren

Hallo,

gut, ich kenne jetzt natürlich nicht die Programmarchitektur deines Update-Assistenten nicht. Dachte aber, da ja das Erstellen der Updatepakte und das Bereitstellen selbiger zwei unterschiedliche Concerns darstellen, dass sich diese Trennung auch irgendwie in deiner Software-Architektur zu finden sein müsste (und dass man dementsprechend an dieser Stelle eingreifen könnte). Es wäre jedenfalls meiner Meinung nach eine sinnvolle Überarbeitung. Ansonsten finde ich dein Projekt sehr interessant und ich verfolge die Entwicklungen aktiv mit, wenn ich es auch bisher nicht verwende.

Weiterhin gutes Gelingen wünsch ich dir bei deinem Projekt. 😃

LG,
Andreas

L
416 Beiträge seit 2008
vor 13 Jahren
\************** Ausnahmetext **************
System.ObjectDisposedException: Auf das verworfene Objekt kann nicht zugegriffen werden.
Objektname: wzNewProject.
   bei System.Windows.Forms.Control.CreateHandle()
   bei System.Windows.Forms.Form.CreateHandle()
   bei System.Windows.Forms.Control.get_Handle()
   bei System.Windows.Forms.Control.GetSafeHandle(IWin32Window window)
   bei System.Windows.Forms.MessageBox.ShowCore(IWin32Window owner, String text, String caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, Boolean showHelp)
   bei System.Windows.Forms.MessageBox.Show(IWin32Window owner, String text, String caption, MessageBoxButtons buttons, MessageBoxIcon icon)
   bei dotNetBase.Windows.Forms.messageBoxEx.showClassicMessageBox(IWin32Window Owner, String Title, String mainInstruction, String Content, MessageBoxButtons Buttons, MessageBoxIcon Icon) in S:\Sources\dotNetBase\Windows.Forms\messageBoxEx.cs:Zeile 37.
   bei dotNetBase.Windows.Forms.messageBoxEx.Show(IWin32Window Owner, String Title, String mainInstruction, String Content, MessageBoxButtons Buttons, MessageBoxIcon Icon) in S:\Sources\dotNetBase\Windows.Forms\messageBoxEx.cs:Zeile 27.
   bei updateSystemDotNet.Designer.Forms.Wizards.NewProject.wzpSetupFtp._installer_actionCancelled(Object sender, designerActionCancelledEventArgs e) in S:\Sources\UpdateSystem.Net\Source\Designer\Designer\Forms\Wizards\NewProject\wzpSetupFtp.cs:Zeile 62.
   bei updateSystemDotNet.Designer.Base.designerActionBase.m_bgwWork_RunWorkerCompleted(Object sender, RunWorkerCompletedEventArgs e) in S:\Sources\UpdateSystem.Net\Source\Designer\Designer.Core\Base\designerActionBase.cs:Zeile 136.
   bei System.ComponentModel.BackgroundWorker.OnRunWorkerCompleted(RunWorkerCompletedEventArgs e)
   bei System.ComponentModel.BackgroundWorker.AsyncOperationCompleted(Object arg)

Assistent starten -> Projekt anlegen -> http Adresse angeben -> ftp angeben -> ftp einrichten -> einrichten abbrechen -> Extras -> Statistikserververwaltung

Edit:
Ausserdem bekomme ich eine Exception wenn ich den Updatedialog (per Code gestartet -> updateController.updateInteractive(this);) abbreche. Dann passiert ca 15 Sekunden nichts und plötzlich fliegt folgende Exception:


Exception in Main()
System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.ObjectDisposedException: Auf das verworfene Objekt kann nicht zugegriffen werden.
Objektname: updateSearchDialog.
   bei System.Windows.Forms.Control.CreateHandle()
   bei System.Windows.Forms.Form.CreateHandle()
   bei System.Windows.Forms.Control.get_Handle()
   bei System.Windows.Forms.Control.GetSafeHandle(IWin32Window window)
   bei System.Windows.Forms.MessageBox.ShowCore(IWin32Window owner, String text, String caption, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, Boolean showHelp)
   bei System.Windows.Forms.MessageBox.Show(IWin32Window owner, String text, String caption, MessageBoxButtons buttons, MessageBoxIcon icon)
   bei updateSystemDotNet.Internal.UI.updateSearchDialog.bgwSearch_RunWorkerCompleted(Object sender, RunWorkerCompletedEventArgs e) in S:\Sources\UpdateSystem.Net\Source\updateController\Internal\UI\updateSearchDialog.cs:Zeile 75.
   bei System.ComponentModel.BackgroundWorker.OnRunWorkerCompleted(RunWorkerCompletedEventArgs e)
   bei System.ComponentModel.BackgroundWorker.AsyncOperationCompleted(Object arg)

Edit2: Ich seh grad der zweite Fehler wurde schon gepostet. Ist halt doof wenn der Client kein Internet hat. Dann wird die Updatesuche wohl immer vom Benutzer abgebrochen. (Beim warten bis er von selbst abbricht kommt die Exception nicht).

H
103 Beiträge seit 2010
vor 13 Jahren
Problem mit user.config

Hey,
ich habe gerade ein kleines Problem bei dem verwenden von Benutzereinstellungen festgestellt. Diese werden bei einer Versionserhöhung nicht von der alten Version übernommen.

Konkret sieht es so aus:
Ich installiere mein Programm auf einem Windows 7 64 Bit Betriebssystem. Dabei wird im Ordner Programme (x86) ein Ordner für die DLL's und die Exe erzeugt (+ noch ein bisschen anderer Stuff, readme etc...).

Weiterhin wird unter C:\Users<User>\AppData\Local<Vendor><Productname>\ ein Ordner mit der aktuellen Versionsnummer angelegt. In diesem Ordner (z.B. C:\Users<User>\AppData\Local<Vendor><Productname>\1.0.0.0)befindet sich die Datei user.config, in der Konfigurationseinstellungen zu meinem Programm gespeichert sind.

Wenn ich nun die Version erhöhe, wird der Ordner C:\Users<User>\AppData\Local<Vendor><Productname>\1.0.0.1 (also je nach Version des Assemblies) erzeugt - und es wird eine neue user.config mit Standardwerten angelegt.

Dabei gehen natürlich sämtliche bisherigen Einstellungen verloren. Kann ich dieses Problem irgendwie umgehen?

PS: tritt auch bei Win 7 32 bit auf...

PHP Tutorials zum PHP lernen

Maximilian Themenstarter:in
238 Beiträge seit 2007
vor 13 Jahren

Moin Hirnhamster,
da kann ich bzw. das Updatesystem vermutlich wenig gegen tun, das ist ja das .NET Framework welches die Einstellungen verwaltet.
Hast du es mal mit der Upgrademethode der Settings versucht? Die scheint ja dafür gedacht zu sein...

Hey Lennart,
mist, jetzt habe ich schon wieder die Edits übersehen. Ich werde mir das beides mal anschauen, ich dachte eigentlich zumindest den 2. Fehler behoben zu haben ... 🤔

Gruß,
Maximilian

H
103 Beiträge seit 2010
vor 13 Jahren

Hey,
perfekt, das ist die Lösung 😃

Zum genauen Vorgehen bitte Folgendes beachten:

Q: Why is there a version number in the user.config path? If I deploy a new version of my application, won't the user lose all the settings saved by the previous version?

A: There are couple of reasons why the user.config path is version sensitive. (1) To support side-by-side deployment of different versions of an application (you can do this with Clickonce, for example). It is possible for different version of the application to have different settings saved out. (2) When you upgrade an application, the settings class may have been altered and may not be compatible with what's saved out, which can lead to problems.

However, we have made it easy to upgrade settings from a previous version of the application to the latest. Simply call ApplicationSettingsBase.Upgrade() and it will retrieve settings from the previous version that match the current version of the class and store them out in the current version's user.config file. You also have the option of overriding this behavior either in your settings class or in your provider implementation.

Q: Okay, but how do I know when to call Upgrade?

A: Good question. In Clickonce, when you install a new version of your application, ApplicationSettingsBase will detect it and automatically upgrade settings for you at the point settings are loaded. In non-Clickonce cases, there is no automatic upgrade - you have to call Upgrade yourself. Here is one idea for determining when to call Upgrade:

Have a boolean setting called CallUpgrade and give it a default value of true. When your app starts up, you can do something like:

   if (Properties.Settings.Value.CallUpgrade) {  
      Properties.Settings.Value.Upgrade();  
      Properties.Settings.Value.CallUpgrade = false;  
   }  

This will ensure that Upgrade() is called only the first time the application runs after a new version is deployed.

aus MSDN Blogs > Cool Client Stuff > Client Settings FAQ

Dabei muss man darauf achten, dass man jede Settings Datei upgraded! In meinem Fall sind das 3 Stück und das ganze sieht so aus:

            // First of all, check if this is a new Version an if we need
            // to import the old settings
            if (Properties.Settings.Default.CallUpgrade)
            {
                Properties.ApplicationState.Default.Upgrade();
                Properties.Settings.Default.Upgrade();
                Properties.SaveMany.Default.Upgrade();
                Properties.Settings.Default.CallUpgrade = false;
                Properties.Settings.Default.Save();
            }

Ich habe am Ende noch ein Save() hinzugefügt, weil sonst die alten Settings bei jedem Programmstart geladen werden würden, (denk ich zumindest mal 0o) - solange, bis man die aktuellen Settings aus einem anderen Grund speichern würde.

PHP Tutorials zum PHP lernen

Maximilian Themenstarter:in
238 Beiträge seit 2007
vor 13 Jahren

Hey Hirnhamster,
schön das das auch Funktioniert 😃

Hallo zusammen,
es gibt eine neue Vorabversion mit dollem Drag&Drop Support (mehr hier), welche ihr hier herunterladen könnt: Download. Wer bereits eine andere Vorabversion installiert hat, kann die neue einfach drüberklöppeln.

Cheerio

H
103 Beiträge seit 2010
vor 13 Jahren

Ich hab noch ne Frage zu der

updateController1.updateInteractive(this);

Funktion. An sich ist die eigentlich perfekt, allerdings fehlen mir 2 Einstellungsmöglichkeiten:

  1. Die Forms müssen bei mir als TopMost erscheinen -> kann ich das einstellen?
  2. Ich würde gern, dass bei keinem neuen Update auch keine Anzeige stattfindet. Sprich diese Screen, der mir mitteilt "Sie benutzen bereits die neuste Version" ist überflüssig un sollte weg, hab aber dazu leider keine Property gefunden.

Viele Grüße
Pascal

PHP Tutorials zum PHP lernen

Maximilian Themenstarter:in
238 Beiträge seit 2007
vor 13 Jahren

Hey Hirnhamster,

  1. Die Forms müssen bei mir als TopMost erscheinen -> kann ich das einstellen?

Nee, dass geht noch nicht. Ich hab bis jetzt immer gedacht das Dialoge die von einer TopMost-Form aufgerufen werden, diese Einstellung erben damit diese nicht im Hintergrund verschwinden. Ist anscheinend aber nicht so, das werd ich also selber machen müssen.

  1. Ich würde gern, dass bei keinem neuen Update auch keine Anzeige stattfindet. Sprich diese Screen, der mir mitteilt "Sie benutzen bereits die neuste Version" ist überflüssig un sollte weg, hab aber dazu leider keine Property gefunden.

Hm stimmt, dass kann man derzeit nicht ausblenden. Das wurde glaube ich schonmal gewünscht, allerdings habe ich mich da aus dem Grund dagegen entschieden, da dies u.U. den Benutzer verwirren könnte wenn z.B. auf Grund einer fixen Internetverbindung die Updatesuche nur wenige Sekunden dauert und der Dialog dann im nu wieder weg wäre ohne das der Benutzer weiß was überhaupt los ist.
Aber machbar isses natürlich und optional werd ich das wohl auch Implementieren 😃

Cheerio

H
103 Beiträge seit 2010
vor 13 Jahren

Nee, dass geht noch nicht. Ich hab bis jetzt immer gedacht das Dialoge die von einer TopMost-Form aufgerufen werden, diese Einstellung erben damit diese nicht im Hintergrund verschwinden. Ist anscheinend aber nicht so, das werd ich also selber machen müssen.

ja wär auf jeden Fall hilfreich.. Die Info "versteckt" sich nämlich immer hinter meinem Splash Screen (obwohl der nicht top most ist 0o) und das kommt ein bisschen blöd

Hm stimmt, dass kann man derzeit nicht ausblenden. Das wurde glaube ich schonmal gewünscht, allerdings habe ich mich da aus dem Grund dagegen entschieden, da dies u.U. den Benutzer verwirren könnte wenn z.B. auf Grund einer fixen Internetverbindung die Updatesuche nur wenige Sekunden dauert und der Dialog dann im nu wieder weg wäre ohne das der Benutzer weiß was überhaupt los ist.

Aso ja, diese anzeige von wegen "ich suche jetzt grad nach updates" brauch ich eigentlich auch nicht 😃

Wär super wenn du bescheid geben könntest wenn du die Optionen implementiert hast.

Und mir ist noch ein Fehler aufgefallen, der sporadisch auftritt, wenn man Updatepakete entfernen will (siehe Anhang). Tritt wie gesagt sporadisch auf, hab keine Ahnung wodurch er verursacht wird. Aber kommt recht häufig und man braucht einige Versuche, bis das Entfernen klappt.

PHP Tutorials zum PHP lernen

Maximilian Themenstarter:in
238 Beiträge seit 2007
vor 13 Jahren

hab keine Ahnung wodurch er verursacht wird

Dito 🤔 Liegt wohl an dem FTPWebRequest der sich da an etwas verschluckt, ich hatte das Problem selbst schon einige Male, konnte es aber weder nachvollziehen noch reproduzieren. Mit der kommenden neuen Version gibt es eine neue und stabilere FTP-Engine bei welcher mir solche Fehler noch nicht untergekommen sind.

ja wär auf jeden Fall hilfreich.. Die Info "versteckt" sich nämlich immer hinter meinem Splash Screen (obwohl der nicht top most ist 0o) und das kommt ein bisschen blöd
+
Aso ja, diese anzeige von wegen "ich suche jetzt grad nach updates" brauch ich eigentlich auch nicht 🙂

Brauchst du denn dann überhaupt das Update-Userinterface? Es gibt auch Methoden im updateController die komplett ohne UserInterface daherkommen. Ließen sich diese nicht besser in deinen Slashscreen implementieren? Nur so als Idee, die Funktionen werd ich natürlich trotzdem implementieren 🙂

Cheerio

H
103 Beiträge seit 2010
vor 13 Jahren

Ja, das Interface brauch ich => die Anzeige dessen, was sich bei dem Update geändert hat ist ziemlich cool 😁

Hast du eine ungefähre Ahnung, wann du dazu kommen wirst das zu implementieren? Wollte mein Programm Ende des Jahres zum Verkauf freigeben (bin gerade in der Beta) und da wäre es ganz nice wenn der Updatescreen nicht verdeckt wird ^^

PHP Tutorials zum PHP lernen

Maximilian Themenstarter:in
238 Beiträge seit 2007
vor 13 Jahren

Mh, ich möchte jetzt keine verbindliche Zusage machen, da ich derzeit viel Schulstreß habe und nicht weiß wieviel Zeit ich davon abknapsen kann, aber das sollte vor Weihnachten noch zu machen sein.