nUpdate - Die komfortable Updatelösung

    • Release
    • Open Source

    Es gibt 889 Antworten in diesem Thema. Der letzte Beitrag () ist von FantaZimt.

      Hallo,

      nur mal als Feedback:
      die von Trade bzw. auch von seh genannten Änderungen an den Servereinstellungen haben den gewünschten Erfolg gebracht!
      Hab das Update System schon intensiv getestet und bin echt begeistert!
      Vielen Dank und Grüße dafür!
      Cool, freut mich. :) Dann viel Spaß damit.

      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 :!:
      Kurzes Update, da das ganze ja ziemlich tot scheint:

      Angesichts der Tatsache, dass mein aktuelles Semester jetzt weniger Module erfordert, kann ich wieder mehr Zeit in das Projekt einbringen.

      Ich arbeite grade an der neuesten Version 3.x, die ein paar neue Features, Bugfixes und Verbesserungen enthält. Der Code bleibt zwar trotzdem hässlich, aber funktional.
      Da sich der Aufwand einfach nicht lohnt, den Code neu zu schreiben, lasse ich das auch so und setze den Fokus darauf lieber in Version 4.
      Dort hat sich eh vieles geändert.

      Heute oder morgen wird die neue Version 3 erscheinen.
      Version 4 kommt im Herbst 2019.
      Freue mich schon drauf.

      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 schrieb:

      und setze den Fokus darauf lieber in Version 4

      Hast du für die Version 4 bereits eine Roadmap?

      Es würde mich interessieren was in der Version 4 anders wird und was bleibt.

      Meine wünsche ;)

      * Option das Installer ohne Adminrechten ausgeführt werden kann (sofern es auch nicht notwendig ist)
      * Die ganze json Uploadgeschichte als Mini-Pluginsystem damit man seine eigene Uploadmethode implementieren könnte.
      * Statistik-Servergeschichte ebenso als art Pluginsystem so das man zum einen entscheiden kann was für ein Server es ist (PHP, ASP.Net, ....) und zum anderen das der Entwickler eigene Werte "Sammeln" kann welche er dann auswerten könnte.
      * Möglichkeit das Updatesystem z.b. in den automatischen Azure DevOps Release Prozess einzubinden.

      Wie schon damals biete ich gerne meine Mitarbeit an sofern gewünscht. Vorallem - ich glaubt mal von dir gehört zu haben das du das AdminTool ja auf WPF umbauen wolltest oder liege ich da falsch?
      Kann gerne Helfen und Ideen mit einbringen. Ab und zu habe ich ja doch einen "Geistesblitz". (die Idee mit der Verteilung damals war ja auch nicht so übel denke ich)

      Schöne Grüße und freue mich das sich hier wieder viel tun wird
      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,

      Nofear23m schrieb:

      Hast du für die Version 4 bereits eine Roadmap?
      Es gibt einen kleinen Teil dessen, was kommen soll: github.com/ProgTrade/nUpdate#roadmap
      Aber das müsste ich mal noch überarbeiten, da wohl noch mehr dazu kommt. Die komplette Architektur hat sich ja geändert und es soll auch z. B. Unterstützung für mehrere Updateendpunkte geben. Das heißt, man kann diese bspw. auch über GitHub verteilen und nUpdate kann damit dann arbeiten.

      Die ersten beiden Wünsche werden dabei sein. Das Mini-Pluginsystem ist so auch schon im Entwurf. Das kann man beim Statistikserver dann ja ebenso einpflegen. :) Das mit Azure DevOps klingt auch gut. Leider habe ich damit jedoch noch nie gearbeitet und da könnte es sein, dass ich etwas Unterstützung brauchen werde.
      Es ist korrekt, dass das UI in der Administration jetzt mit WPF gemacht wird. Ein Freund bastelt dafür jetzt Controls usw., damit es ein neues Design geben wird. ;) Bei der konkreten Umsetzung darfst Du sehr gerne mithelfen, da Du in WPF besser zugange bist als ich und es dann auch schnell ginge. Also auf Mitarbeit würde ich mich freuen.

      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 :!:

      Trade schrieb:

      Das kann man beim Statistikserver dann ja ebenso einpflegen

      Super, das wäre toll. So kann man sowas auch z.b. problemlos in bestehende Website mit einbinden. Top!!

      Trade schrieb:

      Leider habe ich damit jedoch noch nie gearbeitet und da könnte es sein, dass ich etwas Unterstützung brauchen werde.

      Kein problem. Azure DevOps ist ja auch kostenlos (solange man es nicht übertreibt, opensource sowieso) und ich mach sehr, sehr viel darüber.

      Trade schrieb:

      Ein Freund bastelt dafür jetzt Controls usw., damit es ein neues Design geben wird.

      Dafür benötigt es eigene Controls? Das wird interessant!

      Trade schrieb:

      Bei der konkreten Umsetzung darfst Du sehr gerne mithelfen, da Du in WPF besser zugange bist als ich und es dann auch schnell ginge. Also auf Mitarbeit würde ich mich freuen.

      Aber gerne doch. Freue mich schon.

      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. ##

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

      Die Commits sind schon durch. Ich muss es nur noch testen. Mach ich morgen, weil ich für die Uni noch was machen muss.

      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 :!:
      Update auf Version 3.4.1

      • Fixed heavy security issue allowing a possible remote code execution
      • Fixed a vulnerability due to an older version of DotNetZip
      • Added windows event log usage to update installer for service applications
      • Fixed a bug that would recognize the app running as service although it is not when installing an update
      • Added the possibility to run operations before replacing files or folders
      • Added the "Replace files/folders" operation to the dialog for package editing
      • Added rollout conditions
      • Added WPF update installer
      • Fixed problems with unhandled exceptions in the update installer
      • Updated all dependencies to the newest version
      • Added Italian as language
      • Improved the code to prevent further bugs
      • Fixed many smaller bugs


      So, endlich das Update. Hat sich nun etwas verzögert, da die Testphase längert gedauert hat als gewollt, weil sich noch einige Fehler aufgetan haben (vor allem im Installer). Diese sind aber nun behoben.
      Es wird unbedingt empfohlen die neue Bibliotheksversion in Verbindung mit der neuen Version der Administration zu nutzen, da sonst ein sicherheitskritisches Problem nicht ausgeschlossen werden kann. Die neuesten Versionen aller Binaries beheben dieses Problem.
      Viel Spaß damit! :) Danke an @Nofear23m für die Implementierung der Rollout Conditions und des WPF Updaters.
      Ich werde heute im Laufe des Tages nochmal ein Update bringen, da ich schon wieder einen kleinen Fehler entdeckt habe. Dieser ist aber gleich behoben.
      #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

      Da hat sich ja einiges getan. Danke @Trade für dieses tolle Projekt. Respekt!

      Da die "Collout Conditions" ja auf meinem Mist gewachsen sind möchte ich ein paar Worte dazu sagen.

      Mit diesen kann bestimmt werden an welchen Kundenkreis das Update ausgerollt werden soll. Das ist praktisch wenn man z.b. nur an BetaTester ausrollen möchte.
      Bearbeitet man die Conditions dann kann man dann den Kreis systematisch erweitern. Auch um den Server (bei größerem Kundenkreis) nicht zu überlasten könnte man so an gewisse Regionen und/oder Kundennummern ausrollen.

      Über die Conditions läst sich aber natürlich auch steuern das alle das Update bekommen sollen bis auf einen gewissen Kreis welcher die Bedingung erfüllt.
      Das ganze ist recht dynamisch gehalten.

      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. ##

      Also, wenn ich versuche ein Projekt zu erstellen, scheitert es jedesmal an der FTP-Verbindung. Es wird zwar die Datei "updates.json" erstellt, allerdings ohne Inhalt (0 Bytes).

      Anschließend bekomme ich nur den Fehler & nUpdate beendet sich.

      Brainfuck-Quellcode

      1. ---------------------------
      2. Unhandled Exception in nUpdate Administration
      3. ---------------------------
      4. nUpdate Administration has encountered an unhandled error and needs to exit:
      5. Das SafeHandle wurde geschlossen.
      6. bei System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean& success)
      7. bei System.StubHelpers.StubHelpers.SafeHandleAddRef(SafeHandle pHandle, Boolean& success)
      8. bei Microsoft.Win32.Win32Native.SetEvent(SafeWaitHandle handle)
      9. bei System.Threading.EventWaitHandle.Set()
      10. bei System.Net.LazyAsyncResult.Complete(IntPtr userToken)
      11. bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
      12. bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
      13. bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
      14. bei System.Net.ContextAwareResult.Complete(IntPtr userToken)
      15. bei System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken)
      16. bei System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)
      17. bei System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)
      18. ---------------------------
      19. OK
      20. ---------------------------