nUpdate - Die komfortable Updatelösung

    • Release
    • Open Source

    Es gibt 989 Antworten in diesem Thema. Der letzte Beitrag () ist von Archangel.

      Hallo Leute,

      ich habe mir auch mal das nUpdate angesehen, hat eigentlich bis vor kurzem gut funktioniert.
      Leider bringt es beim Erstellen oder editieren von Packages folgende Meldung:



      Wenn ich unter "Overview" auf den "Check Status" Link klicke funktioniert alles.
      Ich habe am Projekt nichts geändert auch der FTP Server ist erreichbar, hat jemand eine Idee?
      mfG.
      Stephan
      Hallo

      Hast du etwas am Server geändert. Das betrifft meines Wissens nach nicht den Zugriff über FTP sondern das keine SSL Verbindung über http aufgerufen werden kann bzw. der Server die Anfrage ablehnt.
      Aber ich weis es auch nicht ganz genau.

      Grüße
      Sascha
      If _work = worktype.hard Then Me.Drink(Coffee)
      Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

      ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

      Hallo Sascha,

      nein am Server wurde nichts geändert, alle aufrufe funktionieren und die Updates sind erreichbar. "Lustigerweise" wird ja auch bei Klick auf "Check Status" dieser nach Kontaktaufnahme zum Server korrekt aktualisiert.
      mfG.
      Stephan
      Sicher kann @Trade dir hier mehr sagen, aber ich denke da ist etrwas nicht erreichbar.

      Wenn ich im Quellcode nach dem Fehler such kommt nur ein Codeblock in Frage. Und in diesem wird einfach versucht das Paket herunterzuladen. Aber eben mit den HttpAuthenticationCredentials.

      C#-Quellcode

      1. // Load the configuration
      2. try
      3. {
      4. var configurationEnumerable = UpdateConfiguration.Download(_configurationFileUrl,
      5. Project.HttpAuthenticationCredentials, Project.Proxy);
      6. configurationList = configurationEnumerable?.ToList() ??
      7. Enumerable.Empty<UpdateConfiguration>().ToList();
      8. }
      9. catch (Exception ex)
      10. {
      11. Invoke(
      12. new Action(
      13. () =>
      14. Popup.ShowPopup(this, SystemIcons.Error, "Error while loading the old configuration.",
      15. ex,
      16. PopupButtons.Ok)));
      17. Reset();
      18. return;
      19. }


      Mal sehen was Trade sagt.
      Grüße
      Sascha
      If _work = worktype.hard Then Me.Drink(Coffee)
      Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

      ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

      Nachtrag, hab mich jetzt selbst nochmal mit dem Debugger hingesetzt.
      Wenn ich ein komplett neues Projekt erzeuge dann funktioniert es perfekt. Mein Problem liegt wahrscheinlich darin begraben das ich den Updater auf mehreren Workstations nutze.
      Ich hatte dazu das *.nupdproj direkt in meine Assembly kopiert und über DevOps an die Workstations verteilt. Anscheinend mag er das aber nicht. Ich werde morgen versuchen das Problem zu verifizieren, in dem ich mein Demo Projekt nochmals auf die andere Workstation übertrage.
      (Edit Falsche Dateiendung korrigiert)
      mfG.
      Stephan

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kaifreeman“ ()

      Du kannst auf den Text der Fehlernachricht mal Rechtsklick machen und dann auf "Copy entire message" gehen und den StackTarce hier posten. Dann wissen wir, wo das lokalisiert ist. So von der Meldung her bin ich da ratlos. Die AuthenticationCredentials sind btw optional.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      Hallo Trade,

      sry hat länger gedauert:
      Der Stacktrace:

      System.Net.WebException: Die Anfrage wurde abgebrochen: Es konnte kein geschützter SSL/TLS-Kanal erstellt werden..
      bei System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
      bei System.Net.WebClient.DownloadString(Uri address)
      bei nUpdate.Updating.UpdateConfiguration.Download(Uri configFileUri, NetworkCredential credentials, WebProxy proxy, Int32 timeout) in C:\Users\Dominic\source\repos\nUpdate\nUpdate.Shared\Updating\UpdateConfiguration.cs:Zeile 117.
      bei nUpdate.Administration.UI.Dialogs.ProjectDialog.<>c__DisplayClass44_0.<LoadConfiguration>b__0() in C:\Users\Dominic\source\repos\nUpdate\nUpdate.Administration\UI\Dialogs\ProjectDialog.cs:Zeile 935.


      Eventuell als Anmerkung mein lokaler Benutzer heißt nicht "Dominic" eventuell hackt es dort.
      mfG.
      Stephan
      Ich hab fast genau das gleiche Problem.

      Quellcode

      1. System.Net.WebException: Die Anfrage wurde abgebrochen: Es konnte kein geschützter SSL/TLS-Kanal erstellt werden..
      2. bei System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
      3. bei System.Net.WebClient.DownloadString(Uri address)
      4. bei nUpdate.Updating.UpdateConfiguration.Download(Uri configFileUri, NetworkCredential credentials, WebProxy proxy, Int32 timeout) in C:\Users\Dominic\source\repos\nUpdate\nUpdate.Shared\Updating\UpdateConfiguration.cs:Zeile 117.
      5. bei nUpdate.Administration.UI.Dialogs.PackageAddDialog.<InitializePackage>b__85_0() in C:\Users\Dominic\source\repos\nUpdate\nUpdate.Administration\UI\Dialogs\PackageAddDialog.cs:Zeile 1135.
      Keine Ahnung, warum ich schon wieder keine Benachrichtigung bekommen habe.
      Danke, ich kann mal schauen, woran das liegt. Weiß aber noch nicht wann ich dazu komme. Habe arbeitsechnisch sehr viel zu tun. Das mit dem lokalen Benutzernamen entstammt nur den Infos der PDB-Datei und macht keine Probleme. Die Datei findet er ja.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      @kaifreeman und @FantaZimt

      welches Framework und welches Betriebsystem?
      Es könnte sein das dass ganze mit der Standard verwendeten TLS Version zusammen hängt.
      Siehe mal hier: stackoverflow.com/questions/33…-1-2-in-net-framework-4-0

      Man müsste dann die TLS Version explizit setzten.
      Grüße , xChRoNiKx

      Nützliche Links:
      Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
      Dann wird es daran liegen das .Net 4.0 (das ist die Version von nUpdate) nichts mit TLS 1.2 anzufangen weiß.
      Entweder wird nUpdate auf min. .Net 4.5 geupdated oder du buildest selbst und machst das.
      Ansonsten bleibt da nicht viel übrigt.

      Ausser noch in der Registry rumfummeln. Hier ist dazu ein Artikel:
      joymonscode.blogspot.com/2015/…net-40-45-use-tls-12.html
      Grüße , xChRoNiKx

      Nützliche Links:
      Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
      Ok, kann das ganze von @xChRoNiKx bestätigen. Es liegt wirklich an .Net 4.7.
      Hab eben den Eintrag in der Registry gemacht und kann jetzt problemlos Updates hochladen.

      Edit:
      Hab jetzt ein Update hochgeladen, allerdings wenn ich das Projekt jetzt in nUpdate wieder öffne bekomme ich diesen Fehler:

      Ich wüsste jetzt nicht, aus welchem Grund die Datei über die URL gefunden werden kann, allerdings nicht im Verzeichnis ist? (Ja, der Benutzer hat alle Rechte Lesen/Schreiben)
      Update konnte ich trotzdem hochladen.

      Wenn ich allerdings in meinem Programm auf Updates prüfe, bekomme ich ebenfalls einen Fehler:


      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „FantaZimt“ ()

      Aber die Datei ist ganz normal auf dem FTP-Server verfügbar?

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
      Könnte natürlich sein das durch die registry Umstellung nun die ftp Verbindung nicht mit tls 1.2 klar kommt und es deswegen nicht klappt.

      Ist ein Teufelskreis.
      Das liegt auch nicht an net 4.7 sondern an der net version von nUpdate. Net 4.0 kennt tls 1.2 nicht. Wie auf der seite meines links beschrieben.

      Lösung ware entweder das nUpdate auf NET 4.5 geupdated wird aber ich glaube zu wissen das hier öfter auch die Rede einer alten ftp DLL / Schnittstelle die Rede war. Daher dann auch der Teufelskreis du stellst alles um aber die ftp lib kennt tls 1.2 nicht und kann dann nicht verbinden.

      Andere Lösung wäre das du deinen registry Eintrag zurück schraubst und die nUpdate administration selbst buildest mit net 4.5 dann sollte die laufen.

      Was würde denn sonst noch gegen ein Update des frameworks sprechen @Trade ?
      Grüße , xChRoNiKx

      Nützliche Links:
      Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
      Gegen ein Update des Frameworks spricht an sich tatsächlich nichts mehr, außer dass ich dann n Major-Update machen muss und somit meine Version 4, an der ich arbeite, zur 5 wird. :D
      Aber dann könnte ich auch einige Dependencies rausschmeißen.

      Edit: Da ich für mein aktuelles Projekt "nur" noch Tests schreiben muss, kann ich am WE mal schauen. Eventuell baue ich dann auch gleich ne neue FTP(S)-Library ein und behebe paar Issues, weil die jetzige ja sehr oft Probleme zu machen scheint.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Trade“ ()

      EaranMaleasi schrieb:

      Damit sollte sich für die Anwendung TLS1.2 aktivieren lassen, ohne den Registry-Hack.


      Jau, das ist natürlich auch möglich.

      Um super duper sicher zu gehen auf .NET 4.6 Updaten das hat per default TLS1.0 bis TLS1.2 aktiviert.
      Im Link von @EaranMaleasi kommt man auf die Seite: stackoverflow.com/a/45692875
      Dort die 2 Source Links und der Post erklären eigentlich nochmal alles.
      Grüße , xChRoNiKx

      Nützliche Links:
      Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
      Hallo und ein frohes, neues Jahr allen Forumsmitgliedern und Gästen,

      Ich bekommen beim Versuch mein eigenes Programm über nUpdate zu aktualisieren einen Fehler.



      ich habe das Update von nUpdate vollzogen. Version 3.3.1 auf 3.5.0.
      nUpdate hat daraufhin die Pakete migriert.
      Ich habe eine neues Updatepaket erstellt mit den neuen Dateien (3.5):
      Newtonsoft.Json.dll
      nUpdate.Internal.dll
      nUpdate.ProvideTAP.dll
      Dies sind die Dateien, die auch seiner Zeit über das Setup verteilt wurden, halt damals nur in der Version 3.3.1.

      Beim installieren habe ich mir den Prozess aus dem Task Manager gegriffen und auf die Version geschaut: 3.3.1. Vermute ich richtig ,dass die 3.3.1 die Pakete aus 3.5 nicht verarbeiten kann? Aber wie muss ich das Update dann verteilen?

      VG Archangel
      PS:
      Wenn ich diese Dateien manuell in das Programmverzeichnis meiner Anwendung kopiere funktioniert das Update der Programmdateien meines Programms problemlos.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Archangel“ ()

      Hi @Archangel,

      ja, es gab dahingehend ein Update in Version 3.4.1, das die Struktur der Pakete geändert hat. Tatsächlich ist es da recht schwierig, eine einheitliche Verteilung zu gewährleisten, was einfach der schlechten Architektur in Version 3.x geschuldet ist. Ich habe schon länger erkannt, dass die suboptimal ist und wollte eine alternative Bereitstellungsmethode für den UpdateInstaller bauen. Bin leider aber nie dazu gekommen bisher.

      Deine Annahme, dass 3.3.1 mit den 3.5-er Paketen nicht umgehen kann, ist korrekt. Nur die umgekehrte Kompatibilität ist gegeben. Eigentlich hätte das ein Major Change sein müssen, aber da habe ich Mist gebaut. Der passende Weg wäre hier erst die neue Library (3.5) in einem alten Paket bereitzustellen und zu einem späteren Zeitpunkt die neue Administrationsversion zu nutzen (dass dann erst die Pakete migriert werden). Das kannst Du natürlich nicht wissen und ich glaube, dass ich hierzu tatsächlich auch keine ausreichende Dokumentation geliefert habe. Darum geht es auch, wenn Du die Libraries manuell hinzufügst. Das Problem ist hier einfach das Zusammenspiel zweier separater Anwendungen und dass in eine alte Version natürlich keine Aufwärtskompatbilität nachträglich reingepatcht werden kann.
      Was Du jetzt versuchen kannst (unter dem Vorbehalt, dass alle Nutzer zumindest die vorletzte Version installiert haben): Lösche das letzte Paket, was Du veröffentlich hast. Nutze dann nochmal nUpdate.Administration 3.3.1, veröffentliche das Paket mit den 3.5er-Dateien dort und update erst danach die Administration bzw. nutze sie erst wieder für's nächste Update. Es muss sichergestellt sein, dass erst alle User diese neuen Dateien für das Updaten nutzen. Dann kann man zukünftig auf die neue Variante setzen.
      Alternative wäre natürlich das Update manuell auszurollen und die Nutzer darüber zu informieren.

      Sorry dafür.

      Grüße
      #define for for(int z=0;z<2;++z)for // Have fun!
      Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

      Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Trade“ ()