nUpdate - Die komfortable Updatelösung

    • Release
    • Open Source

    Es gibt 990 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

      nUpdate v3 wird weiterhin gen .NET 4 kompiliert. Also das müsste passen.

      Hast Du sonst noch etwas an DLLs referenziert? Wenn alles nicht hilft, versuch mal NuGet.

      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 :!:
      Ich habe ein neues Hello World Projekt erstellt und .Net 4 als Zielplattform eingestellt. Mit NuGet nUpdate.WithoutTAP 3.1 installiert. Sofort kommt die Warnmeldung unten im Screenshot. Wenn ich in der AssemblyInfo.cs das using nUpdate.Core eintrage, lässt sich das Projekt nicht mehr kompilieren. Gehe ich auf .Net 4.5 ist die Welt in Ordnung. Eine Idee?

      Ich konnte das reproduzieren. Keine Ahnung, warum NuGet in der app.config ein Binding Redirect für diese Assemblyversion eingetragen hat (wtf?).
      Edit: Ah, die Referenzen hatten "Spezifische Version" auf True.

      Diese ganzen Referenzen und Pakete machen mich irgendwann noch verrückt. Ich werde das beheben und später eine neue Version zur Verfügung stellen.

      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 2 mal editiert, zuletzt von „Trade“ ()

      Du könntest github.com/ProgTrade/nUpdate/tree/master/nUpdate als .NET Standard Bibliothek bereitstellen, somit könnte man es auch in Cross Plattform Szenarios verwenden. (Die GUI kann sich ja jeder dann selber schreiben).
      Mit .NET Standard habe ich mich noch gar nicht richtig auseinandergesetzt. ^^ Weiß bloß, dass damit Cross-Platform eben ermöglicht wird.
      Was genau definiert .NET Standard (2.0) denn alles bzw. worauf basiert das so? Muss ja dennoch mit dem .NET-Framework zusammenhängen, oder? Und was hat es mit .NET Core auf sich? Ich weiß, dass dazu MSDN-Seiten existieren. Diese habe ich allerdings bisher nicht so ganz durchschaut und mich dann nicht weiter damit beschäftigt. Brauche ich dann eine spezifische Branch für .NET Standard oder kann ich das auch komplett porten und direkt in den master packen?

      Jedenfalls ist Cross Platform eine gute Sache. Werde ich auf jeden Fall machen, sobald ich hier die restlichen Probleme beseitigt habe. Wie sieht das denn mit dem mitgelieferten UI aus? Muss ich das dann noch auslagern, wie es im develop-Branch mittlerweile der Fall ist? Oder kann das ruhig mitgeliefert werden?

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



      Stell dir NET Standard wie ein Interface vor, alle Frameworks, .NET Framework, Mono, Xamarin, dotnet Core müssen die APIs die in NET Standard vorgegeben sind implementieren. Dadurch läuft eben jede Anwendung/Bibliothek auf all diesen Frameworks. Es gibt eine VS Extension mit dem Namen "Portability Analyzer" damit kannst du schon überprüfen ob NET Standard alles unterstützt was du in nUpdate verwendet hast. (Beispiel im Anhang)

      Das mitgelieferte UI müsstest du allerdings auslagern, am besten du entkoppelst einfach nur den "Core" also alles unter nUpdate/nUpdate.
      Dateien
      Update auf Version 3.1.2

      • Fixed possible issues when referencing nUpdate due to version
        specifications of Microsoft.Bcl.Async and System.Runtime that conflict
        with .NET 4 (removed now)
      • Fixed possible exception in nUpdate.Administration due to Invoke
        being used, even if the window had already been closed (missing window
        handle)
      • Small code improvements
      Download wie immer im Startpost und auf den dort verlinkten Seiten.

      @Böker Damit sollte alles jetzt ausnahmslos auch unter .NET 4 klappen. ;)
      @ThuCommix Vielen Dank! Jetzt habe ich das verstanden. Ist eine ziemlich coole Sache, die ich auf jeden Fall dann machen werde. nUpdate.Updating muss dann aber auch mit entkoppelt werden. Da ich im develop-Branch dies eh schon getan habe, kann ich das ja so eigentlich übernehmen. Das bedeutet allerdings auch gleichzeitig, dass ich dann einen API-Change habe, der nicht rückwärtskompatibel ist. Schließlich gibt es dann z. B. ein nUpdate.UI.WinForms, das man installieren muss und das als Abhängigkeit dann nUpdate hat. Dann hätte ich schon die v4.0 und könnte gleich noch mehr in dem Zuge ändern.
      Oder ich warte noch mit dem .NET Standard und mach das dann für die aktuelle v4.0 (die dann zu v5 würde), die ich ja nebenzu schon entwickle. Mal sehen. Kommen wird es auf jeden Fall als .NET Standard Bibliothek.

      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 :!:
      Das kann doch nicht sein. :( Ich habe alles bzgl. Abgängigkeitsbindung rausgeworfen und extra noch alles mit .NET 4 getestet. Wie hast Du die Library referenziert?

      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 :!:
      Ich benutze vom NuGet das Paket NoTAP. Ich benutze also das Paket mit den Events.

      Jetzt habe ich eine Frage weil etwas nicht funktioniert. Und zwar abonniere ich SearchFinished SearchFailed SearchStarted nach dem initialisieren den UpdateManagers.
      Nach dem Abonnieren starte ich die Suche nach Updates mit SearchUpdatesAsync.

      Das SearchFinished funktioniert und wird aufgerufen sobald er fertig ist mit suchen. Aber das SearchStarted wird garnicht aufgerufen obwohl ich es abonniert habe.
      Und wenn ich z.B. mein Internet disconnecte wollte ich testen ob SearchFailed funktioniert. Das klappt auch nicht, er ruft dann aber komischerweise auch SearchFinished auf.

      Das steht in meinem Form_Shown Event

      C#-Quellcode

      1. UpdateManager manager = new UpdateManager(new Uri("blabla.de/updates.json"), "rsa key", new CultureInfo("en"));
      2. manager.UpdateSearchStarted += Manager_UpdateSearchStarted;
      3. manager.UpdateSearchFinished += Manager_UpdateSearchFinished;
      4. manager.UpdateSearchFailed += Manager_UpdateSearchFailed;
      5. manager.SearchForUpdatesAsync();


      Und das hier sind die abonnierten Events:


      Das einzige Event was funktioniert ist DownloadFinished... Der Rest wird ignoriert. Gibt es vielleicht noch eine versteckte Einstellung von der ich nichts weiß damit diese Events aufgerufen werden?
      Bilder
      • devenv_2017-09-02_13-55-35.png

        23,1 kB, 799×437, 320 mal angesehen
      Hi,

      das Event UpdateSearchFailed wird nicht aufgerufen, wenn keine Internetverbindung besteht. Dann wird einfach ausgegeben, dass keine Updates gefunden werden.
      Das UpdateSearchStarted schaue ich mir mal an.
      Gibt eh noch ein paar Bugs, wegen denen ich eine neue Version veröffentlichen 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 :!:

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

      Update auf Version 3.1.8

      • Fixed possible unhandled errors due to problems with SQL connections in nUpdate.Administration
      • Fixed that specific events in the UpdateManager were not fired correctly
      • Fixed that nUpdate stopped updating when adding an entry to the statistics failed instead of just showing a warning
      • Fixed a bug that the application terminated when clicking "No" in the upcoming UAC prompt for starting nUpdate UpdateInstaller - now it simply continues running
      • Fixed possible uncaught exceptions when using the Taskbased asynchronous pattern and starting nUpdate UpdateInstaller fails
      • Internal improvements of some classes and implementations

      Download wie immer im Startpost.
      @seh Sollte jetzt funktionieren, wie es sollte. ;) Wegen den Problemen mit den Abhängigkeiten habe ich mit @Böker eine Konversation geführt. Sehr merkwürdig ist nämlich, dass von System.Runtime mehrere Versionen aufgeführt sind. Ich schätze, dass sich da nur irgendwas überlappt bzw. nicht ganz sauber deinstalliert worden ist. Die ganzen Bindings sind jdf. weg und lokal funktioniert das jetzt auch alles ohne Probleme.

      btw: @ThuCommix :>



      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“ ()

      Ja. :D Das betrifft allerdings die aktuelle v4.0 (wie auch am Framework zu sehen ist). Bei der v3.x lasse ich das alles so, weil es sonst zu komplex wird, was die ganze(n) Zusammenhänge und Versionierung betrifft. Zudem habe ich ja in der v4 durch die komplette Überarbeitung schon die besten Voraussetzungen für .NET Standard geschaffen.

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

      also ich würde gerne auch nochmal meinen Lob an dich aussprechen. Ich nutze jetzt die ProvideTAP und bin damit äußerst zufrieden!
      Ich habe gerade an einen Freund eine aktualisierte Version zu Verfügung gestellt nachdem er mich bat noch etwas in seinem Programm zu ändern.

      Und alles hat reibungslos funktioniert. So gehört sich das.

      Gute Arbeit :thumbup:
      Vielen Dank. :) Das freut mich, dass es funktioniert. Schließlich ist ja in letzter Zeit doch noch einiges zusammengekommen und das war es noch gar nicht. ^^
      Habe @Böker jetzt erstmal eine provisorische Lösung wegen seinem Problem gegeben. Mal sehen, ob die funktioniert. Das scheint eine Problematik von nUpdate.WithoutTAP zu sein, dass sich da eben die Abhängigkeiten von ProvideTAP einmischen, obwohl sie gar nicht relevant sind. Es funktioniert zwar meistens, aber anscheinend nicht immer. Daher habe ich nun entschieden, die Unterscheidung von ProvideTAP und WithoutTAP zu beenden und jeweils ein einheitliches Projekt für jede bisherige Buildkonfigurationen der Library bereitzustellen.
      EAP bleibt also weiterhin, wird aber in der v4 rausfliegen. Das kann ich jetzt schon mal sagen, weil einfach das TAP die Zukunft der asynchronen Programmierung ist und async await mit Task etc. einfach klasse ist. Aber bis dahin ist ja noch etwas Zeit. ^^
      Mal sehen, wann ich das neue Update rausbringe. Ich schätze mal heute Nachmittag könnte es was werden. Ansonsten eher Mittwoch.

      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 2 mal editiert, zuletzt von „Trade“ ()

      Hallo Trade,

      zunächst mal absolutes Kompliment zum Programm.
      Das vorherige .netupdater war ja schon der Hammer.
      Wollte jetzt dein neues Programm einbinden.
      Leider kommt bei mir aber immer wieder der Fehler, der schon mal hier behandelt wurde.

      Quellcode

      1. Warnung 54 Der Primärverweis "nUpdate, Version=3.1.8.0, Culture=neutral, processorArchitecture=MSIL" konnte nicht aufgelöst werden, da er eine indirekte Abhängigkeit von der Frameworkassembly "System.Runtime, Version=2.6.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" aufweist, die im derzeit als Ziel angegebenen Framework nicht aufgelöst werden konnte. ".NETFramework,Version=v4.0". Zur Beseitigung des Problems muss entweder der Verweis "nUpdate, Version=3.1.8.0, Culture=neutral, processorArchitecture=MSIL" entfernt oder die Anwendung erneut als Ziel für eine Frameworkversion verwendet werden, die "System.Runtime, Version=2.6.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" enthält. AppName


      Mein Programm verwendet .NET 4.
      Habe dein PRogramm über NuGet installiert.

      Es ist Visual Studio 2013 im Einsatz.

      Was kann ich machen?

      Vielen Dank im Voraus.

      LG Alex

      Ps. Habe "without TAP" verwendet,
      Hi,

      danke erstmal.

      dj alex z schrieb:

      Was kann ich machen?
      Warten. Ich bin gerade dabei, das Problem endgültig aus der Welt zu schaffen. Voraussichtlich kommt heute abend noch ein Update.

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