nUpdate - Die komfortable Updatelösung

    • Release
    • Open Source

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

      Nein. Du sollst einfach im Einstiegspunkt die Updateroutine durchführen, bevor die Anwendung selbst über Application.Run mit Deinem Formular gestartet wird. Schau Dir an, wie das in einer C#-Anwendung gemacht wird und baue es in VB.NET nach.

      Piew-Keks schrieb:

      nur mit c++/c# werde ich nicht ganz Schlau daraus
      Das ist C#, nicht C++. ;) Zwischen den beiden existiert auch ein (merklicher) Unterschied. Aber das hat damit ja auch nichts zu tun. Es geht um die Methoden an sich, die sind in VB.NET genau die gleichen. Hätte Dir auch nupdate.net/docs/#type/UpdateManager?SearchForUpdatesAsync verlinken können. Das war eigentlich der Sinn dahinter. Muss die Dokumentation noch mal auf die verschiedenen Konfigurationen ausweiten und aktualisieren, da die Sequenzdiagramme nicht mehr stimmen. Daher GitHub.

      Piew-Keks schrieb:

      aber leider bekomme ich keine Verweise auf die Klassen für den Check ob Updates vorhanden sind oder nicht.
      Also den UpdateManager. Der ist in nUpdate.Updating enthalten. Was genau klappt da nicht?

      Piew-Keks schrieb:

      Wäre einfacher wenn der Check gleich als Ausgabe mit dabei wäre um es evtl. gleich in ein Event zu Packen
      Verstehe leider nicht, was Du mir damit sagen willst. Was soll "Ausgabe" bedeuten? Meinst Du, dass die Methode direkt einen Boolean zurückgibt, damit Du sie direkt in einem Handler (das ist kein Event!) aufrufen kannst? Wenn ja, dann ist das ja bereits so. Siehe SearchForUpdates. Aber solange Du das EAP nutzt, geht das mit der asynchronen Methode halt nicht anders. Da musst Du dann Events abonnieren und das da behandeln. Ist unter anderem einer der Gründe, warum es mit dem TAP und async await angenehmer ist, da man auch keine WaitHandles braucht.

      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 :!:
      Komme einfach nicht dazu den Import dafür zu Setzen.

      Keine Definition gefunden...

      Wolte es eigentlich ganz Simpel klären.

      Update wird gesucht und dann ausgewertet vorhanden oder nicht und dementsprechend Application close Event abgefeuert. Oder eben eine Zweite Form öffnen mit dem Hinweis erst Neue Version laden.
      Keine Definition für was gefunden?

      Piew-Keks schrieb:

      Update wird gesucht und dann ausgewertet vorhanden oder nicht und dementsprechend Application close Event abgefeuert. Oder eben eine Zweite Form öffnen mit dem Hinweis erst Neue Version laden.
      Wie Du es implementierst bleibt ja Dir überlassen. nUpdate stellt ja nur die nötigen Methoden bereit, die Du dafür verwenden kannst.

      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, auf Windows 7 und Windows 32-Bit meldet nUpdate immer, es wären keine Updates vorhanden. Sind es aber!
      Mache ich da was falsch?

      Danke

      Ergänzung: Auf 64-Bit Betriebssystemen funktioniert nUpdate einwandfrei. Nur auf 32-Bit Betriebssystemen kommt immer die Meldung: Keine Updates vorhanden, obwohl diese definitiv vorliegen! Es kommt keine weitere Fehlermeldung. Verhalten ist in beiden Varianten (mit und ohne TAP) in einem frischen "Hello World"-Projekt reproduzierbar. Getestet mit Windows 7 32-Bit und Windows 10 32-Bit.

      Update 11.10.2017:
      Schade, auch nach 2 Wochen hier keine Reaktion. Wir haben jetzt das Rollback auf Updatesystem.Net durchgeführt, da wir nicht komplett alle 32-bit Betriebsysteme von Onlineupdates ausschließen konnten.

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Böker“ ()

      nUpdate Tutorial
      Das sollte auf jeden Fall noch passen.

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

      Roady1911 schrieb:

      ich bekomm nen fehler
      Ich habe leider keine Glaskugel parat. Nein, im Ernst. Wie soll ich Dir da helfen können? Du musst mir schon mehr Infos geben, was passiert und was für Fehler auftreten. Sonst kann das ja alles sein...

      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 :!:
      Lies Dir auf jeden Fall das Tutorial durch. Du musst natürlich schon einen ​UpdateManager instanziieren und dann übergeben, weil der die Informationen für den Updateprozess verwaltet. Das sagt Dir auch IntelliSense. Für ​SynchronizationContext musst Du ​System.Threading importieren (sollte Dir VS auch vorschlagen, wenn Du drüber hoverst).

      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 :!:
      Du musst natürlich schon einen UpdateManager instanziieren


      wie mach ich das?

      EDIT: Das steht nicht im tutorial wei man das macht, bin neu in vb.net, deswegen :(

      VB.NET-Quellcode

      1. ​dim manager as updatemanager
      ? @Trade

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

      Doch, das steht schon drin, was Du machen musst. Wie gesagt, lies das Tutorial! Nicht nur überfliegen und die passenden Codes suchen.



      Roady1911 schrieb:

      bin neu in vb.net
      Ich setze bei der Benutzung meiner Library eigentlich voraus, dass die Grundlagen des .NET-Frameworks und der verwendeten Sprache beherrscht werden. Das ist ja eigentlich bei allen Bibliotheken so, damit Du die nutzen kannst. Was eine Deklaration und Instanz ist, sollte da eigentlich klar sein. Ich verstehe, dass man eventuell nicht direkt alle Parameter versteht und wie diese zu verwenden sind, aber das ist ja wirklich elementar. Bist Du Dir daher sicher, dass Du schon direkt einen Updater brauchst? Das halte ich nicht gerade für sinnvoll, sorry. Es wäre wohl besser, wenn Du Dir die Grundlagen aneignest und Dich anfangs an kleinere Projekte ranmachst. ;) Das ist nicht böse gemeint, aber sonst macht das imho wenig Sinn.

      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 so neu bin ich ach nicht, programiere theoretisch 2 oder 3 jahre net schon, aber ich war in dem moment kurz brain afk, und habs nicht gescheit durchgelesen, sollte jetzt gehen, aber nach dem es keine updaates gibt, kommt das update instalieren fenster, hab das tut durchgelesn, kommt trotzdem das fenster warum?
      Bilder
      • form.png

        21,56 kB, 387×377, 48 mal angesehen
      • Screenshot_1.png

        22,67 kB, 448×178, 32 mal angesehen

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

      Roady1911 schrieb:

      so neu bin ich ach nicht, programiere theoretisch 2 oder 3 jahre net schon

      Roady1911 schrieb:

      bin neu in vb.net, deswegen

      Roady1911 schrieb:

      VB.NET-Quellcode
      dim manager as updatemanager
      ? @Trade
      :huh:

      Das Instanziieren von Klassen hat zwar nur indirekt was mit dem Tutorial zu tun, aber gut.

      Was den Fehler angeht: Das sieht sehr komisch aus. Allerdings bringt mir die Meldung so wenig. Gib mir bitte auch den dazugehörigen StackTrace, damit ich das Problem lokalisieren kann.

      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 hab garkeinen eingebaut, bin das tutorial nachgegangen, schritt für schritt


      EDIT:

      Spoiler anzeigen

      Brainfuck-Quellcode

      1. Informationen über das Aufrufen von JIT-Debuggen
      2. anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.
      3. ************** Ausnahmetext **************
      4. System.ArgumentNullException: Der Wert darf nicht NULL sein.
      5. Parametername: source
      6. bei System.Linq.Enumerable.Count[TSource](IEnumerable`1 source)
      7. bei nUpdate.UI.Dialogs.NewUpdateDialog.NewUpdateDialog_Load(Object sender, EventArgs e)
      8. bei System.Windows.Forms.Form.OnLoad(EventArgs e)
      9. bei System.Windows.Forms.Form.OnCreateControl()
      10. bei System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
      11. bei System.Windows.Forms.Control.CreateControl()
      12. bei System.Windows.Forms.Control.WmShowWindow(Message& m)
      13. bei System.Windows.Forms.Control.WndProc(Message& m)
      14. bei System.Windows.Forms.ScrollableControl.WndProc(Message& m)
      15. bei System.Windows.Forms.Form.WmShowWindow(Message& m)
      16. bei System.Windows.Forms.Form.WndProc(Message& m)
      17. bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
      18. bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
      19. bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
      20. ************** Geladene Assemblys **************
      21. mscorlib
      22. Assembly-Version: 4.0.0.0.
      23. Win32-Version: 4.7.2114.0 built by: NET47REL1LAST.
      24. CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll.
      25. ----------------------------------------
      26. System
      27. Assembly-Version: 4.0.0.0.
      28. Win32-Version: 4.7.2114.0 built by: NET47REL1LAST.
      29. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll.
      30. ----------------------------------------
      31. DanSanks Supportsoftware
      32. Assembly-Version: 1.0.0.0.
      33. Win32-Version: 1.0.0.0.
      34. CodeBase: file:///C:/Users/Memelismo/AppData/Local/Apps/2.0/DMODNDCZ.EH0/1B4ZAVDN.81J/dans..tion_314efdffda837621_0001.0003_a964d3a3de551043/DanSanks Supportsoftware.exe.
      35. ----------------------------------------
      36. Microsoft.VisualBasic
      37. Assembly-Version: 10.0.0.0.
      38. Win32-Version: 14.7.2053.0 built by: NET47REL1.
      39. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll.
      40. ----------------------------------------
      41. System.Core
      42. Assembly-Version: 4.0.0.0.
      43. Win32-Version: 4.7.2114.0 built by: NET47REL1LAST.
      44. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll.
      45. ----------------------------------------
      46. System.Windows.Forms
      47. Assembly-Version: 4.0.0.0.
      48. Win32-Version: 4.7.2114.0 built by: NET47REL1LAST.
      49. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
      50. ----------------------------------------
      51. System.Drawing
      52. Assembly-Version: 4.0.0.0.
      53. Win32-Version: 4.7.2114.0 built by: NET47REL1LAST.
      54. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
      55. ----------------------------------------
      56. System.Configuration
      57. Assembly-Version: 4.0.0.0.
      58. Win32-Version: 4.7.2053.0 built by: NET47REL1.
      59. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll.
      60. ----------------------------------------
      61. System.Xml
      62. Assembly-Version: 4.0.0.0.
      63. Win32-Version: 4.7.2114.0 built by: NET47REL1LAST.
      64. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll.
      65. ----------------------------------------
      66. nUpdate.WithoutTAP
      67. Assembly-Version: 3.2.0.0.
      68. Win32-Version: 3.2.0.0.
      69. CodeBase: file:///C:/Users/Memelismo/AppData/Local/Apps/2.0/DMODNDCZ.EH0/1B4ZAVDN.81J/dans..tion_314efdffda837621_0001.0003_a964d3a3de551043/nUpdate.WithoutTAP.DLL.
      70. ----------------------------------------
      71. System.Runtime.Remoting
      72. Assembly-Version: 4.0.0.0.
      73. Win32-Version: 4.7.2114.0 built by: NET47REL1LAST.
      74. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll.
      75. ----------------------------------------
      76. MetroSuite 2.0
      77. Assembly-Version: 2.0.1.3.
      78. Win32-Version: 2.0.1.3.
      79. CodeBase: file:///C:/Users/Memelismo/AppData/Local/Apps/2.0/DMODNDCZ.EH0/1B4ZAVDN.81J/dans..tion_314efdffda837621_0001.0003_a964d3a3de551043/MetroSuite 2.0.DLL.
      80. ----------------------------------------
      81. MySql.Data
      82. Assembly-Version: 6.9.9.0.
      83. Win32-Version: 6.9.9.0.
      84. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/MySql.Data/v4.0_6.9.9.0__c5687fc88969c44d/MySql.Data.dll.
      85. ----------------------------------------
      86. System.Data
      87. Assembly-Version: 4.0.0.0.
      88. Win32-Version: 4.7.2114.0 built by: NET47REL1LAST.
      89. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll.
      90. ----------------------------------------
      91. System.Transactions
      92. Assembly-Version: 4.0.0.0.
      93. Win32-Version: 4.7.2114.0 built by: NET47REL1LAST.
      94. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll.
      95. ----------------------------------------
      96. System.EnterpriseServices
      97. Assembly-Version: 4.0.0.0.
      98. Win32-Version: 4.7.2053.0 built by: NET47REL1.
      99. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.EnterpriseServices/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll.
      100. ----------------------------------------
      101. System.Data.DataSetExtensions
      102. Assembly-Version: 4.0.0.0.
      103. Win32-Version: 4.7.2053.0 built by: NET47REL1.
      104. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Data.DataSetExtensions/v4.0_4.0.0.0__b77a5c561934e089/System.Data.DataSetExtensions.dll.
      105. ----------------------------------------
      106. System.Numerics
      107. Assembly-Version: 4.0.0.0.
      108. Win32-Version: 4.7.2053.0 built by: NET47REL1.
      109. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll.
      110. ----------------------------------------
      111. Accessibility
      112. Assembly-Version: 4.0.0.0.
      113. Win32-Version: 4.7.2053.0 built by: NET47REL1.
      114. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll.
      115. ----------------------------------------
      116. System.Data.resources
      117. Assembly-Version: 4.0.0.0.
      118. Win32-Version: 4.7.2053.0 built by: NET47REL1.
      119. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Data.resources/v4.0_4.0.0.0_de_b77a5c561934e089/System.Data.resources.dll.
      120. ----------------------------------------
      121. System.Windows.Forms.resources
      122. Assembly-Version: 4.0.0.0.
      123. Win32-Version: 4.7.2053.0 built by: NET47REL1.
      124. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
      125. ----------------------------------------
      126. mscorlib.resources
      127. Assembly-Version: 4.0.0.0.
      128. Win32-Version: 4.7.2053.0 built by: NET47REL1.
      129. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_de_b77a5c561934e089/mscorlib.resources.dll.
      130. ----------------------------------------
      131. nUpdate.Internal
      132. Assembly-Version: 3.2.0.0.
      133. Win32-Version: 3.2.0.0.
      134. CodeBase: file:///C:/Users/Memelismo/AppData/Local/Apps/2.0/DMODNDCZ.EH0/1B4ZAVDN.81J/dans..tion_314efdffda837621_0001.0003_a964d3a3de551043/nUpdate.Internal.DLL.
      135. ----------------------------------------
      136. Newtonsoft.Json
      137. Assembly-Version: 10.0.0.0.
      138. Win32-Version: 10.0.3.21018.
      139. CodeBase: file:///C:/Users/Memelismo/AppData/Local/Apps/2.0/DMODNDCZ.EH0/1B4ZAVDN.81J/dans..tion_314efdffda837621_0001.0003_a964d3a3de551043/Newtonsoft.Json.DLL.
      140. ----------------------------------------
      141. System.Runtime.Serialization
      142. Assembly-Version: 4.0.0.0.
      143. Win32-Version: 4.7.2114.0 built by: NET47REL1LAST.
      144. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Serialization/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll.
      145. ----------------------------------------
      146. ************** JIT-Debuggen **************
      147. Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
      148. Konfigurationsdatei der Anwendung oder des Computers
      149. (machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
      150. Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.
      151. Zum Beispiel:
      152. <configuration>
      153. <system.windows.forms jitDebugging="true" />
      154. </configuration>
      155. Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
      156. Ausnahmen an den JIT-Debugger gesendet, der auf dem
      157. Computer registriert ist, und nicht in diesem Dialogfeld behandelt.



      StackTrace in Spoiler gepackt. ~Trade

      ???


      Bilder
      • screencode.png

        21,9 kB, 1.399×155, 45 mal angesehen

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

      Was hast Du nicht eingebaut? Der ganze Code wäre btw auch hilfreich. Nicht als Bild, sondern hier über die Codetags.

      Die Updateargumente müssen übrigens vor dem Aufruf von ​UpdaterUI.ShowUserInterface gesetzt werden. Nach diesem Aufruf ist die Anwendung nämlich beendet und das wird nicht mehr aufgerufen. Also komplette Initialisierung vom UpdateManager darüber.

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

      VB.NET-Quellcode

      1. Private Sub OptionenToolStripMenuItem_Click_1(sender As Object, e As EventArgs) Handles OptionenToolStripMenuItem.Click
      2. Dim manager As New UpdateManager(New Uri("http://********/updates.json"), "<RSAKeyValue><Modulus>****</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>", New CultureInfo("de-AT"))
      3. Dim updaterUI As New UpdaterUI(manager, SynchronizationContext.Current)
      4. Dim succeededArgument As New UpdateArgument("success", UpdateArgumentExecutionOptions.OnlyOnSucceeded)
      5. Dim failedArgument As New UpdateArgument("failed", UpdateArgumentExecutionOptions.OnlyOnFaulted)
      6. manager.Arguments.Add(succeededArgument)
      7. manager.Arguments.Add(failedArgument)
      8. updaterUI.ShowUserInterface()
      9. End Sub



      wenn ich das ganze in vb ausführe, dann passiert das
      Bilder
      • warum.png

        20,52 kB, 1.047×525, 58 mal angesehen

      Trade schrieb:

      Was hast Du nicht eingebaut?
      :?:

      Ansonsten kann ich Dir ohne StackTrace nicht helfen... Daher wäre es nice, wenn Du den posten würdest.

      Kleine Verbesserung: Pack mal die Deklaration vom UpdaterUI vor den ​ShowUserInterface-Aufruf. Dass das wirklich separat ist. Müsste zwar so an sich auch gehen, weil es ja die gleiche Instanz ist, aber dennoch.

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