nUpdate - Die komfortable Updatelösung

    • Release
    • Open Source

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

      Und noch eine Frage(hoffe ich nerve nich...): Wenn ich UseHiddenSearch auf True gestellt habe, werden trotzdem Fehlermeldungen von nUpdate ausgegeben, falls die Suche nach einem Update fehlschlägt. Wenn ein Benutzer mein Programm auf einem Rechner ohne Internetverbindung installiert und ich vor jedem Programmstart checke, ob ein Update verfügbar ist, wird jedes Mal der Fehler angezeigt. Dies kann ich zwar umgehen, indem ich abfrage, ob eine Internetverbindung besteht, ich kann aber nur sehr schwer abfragen, ob z.B. die Firewall die Verbindung der nUpdate.dll blockt oder ein Proxy die Verbindung mit meiner Webseite unterbindet. Deshalb die Frage: gibt es einen Parameter, der die Ausgabe von Fehlermeldungen temporär unterbindet?

      ​Lg Mokki
      ​Smartnotr - ein intelligentes Notizprogramm
      zum Thread

      Mokki schrieb:

      das er check ob er sie benötigt und sie sich dann gegebenfalls hohlt.
      Ist nur die Frage, wie ich das anstellen soll. Das verkompliziert den kompletten Updateprozess halt extrem. Was genau stört Dich, wenn er sich die Rechte direkt holt? ^^

      Mokki schrieb:

      gibt es einen Parameter, der die Ausgabe von Fehlermeldungen temporär unterbindet?
      Nein, den habe ich im ​UpdaterUI nicht implementiert. Weiß nicht, ob es Sinn macht, die Fehler zu verschlucken. Könnte ja auch ein anderer sein, der wichtig ist und der würde dann nicht angezeigt.
      Ich denke mal darüber nach, weil ich natürlich weiß, was Du meinst.

      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 wurde wegen meinem Programm angeschrieben. Das Programm ist portabel ich hab aber auf der Webseite gerade nur die Version 1.0.0b2 als Zip. Der Besucher läd sich diese runter u aktualiersiert mit nUpdate. Wenn dieser jetzt aber keine Adminrechte auf seinem Rechner hat, kann er nicht updaten. Klar einfach workaround: einfach die aktuelle Version auf der Webseite anbieten. Dann muss sich aber der Benutzer (der ja eig mit nUpdate updaten könnte) immer auf der Webseite die neuste Version runterladen und er überschreibt dann ev Einstellungen... (ich weis das des nen ziehmlich Akt ist, ich wünsch es mir eben und deshalb hab ichs vorgeschlagen)

      Zu dem mit den Fehlermeldungen: wenn ich nach Updates im Hintergrund suche, dann mag ich die Fehlermeldung dem Benutzer nicht zeigen (sonst hat er bei jedem Programmstart ne Fehlermeldung), wenn er nach Updates sucht oder bei der Installation etwas schief läuft, dann würde ich diese natürlich anzeigen.

      Lg Mokki
      ​Smartnotr - ein intelligentes Notizprogramm
      zum Thread

      Okay, ich setze beides mal auf die Roadmap für die v4.0.

      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 :!:
      Wenn man im Menü Add new package eine neue Version hinzufügen möchte, gibt es insgesamt 5 Möglichkeiten eine Versionsnummer festzulegen.

      Frage hierzu: Wie kann man der kompilierten *.exe ihren Deleopment Build (5) mitgeben?





      Edit: Hab's rausgefunden.

      Beispiel zu Versionsnummern:
      • 1.0.0
      • 1.2.3.4a5
      Hauptversion

      Nebenversion

      Buildnummer

      Revision
      DevelopmentStage
      DevelopmentBuild
      1.2.3.4a5
      Numerisch.Numerisch.Numerisch.Numerisch
      a = Alpha,
      b = Beta
      Numerisch

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

      Das funktioniert natürlich nicht über die normale AssemblyVersion, weil die eben nur diese 4 Versionen unterstützt (siehe System.Version).
      nUpdate benutzt deshalb in den Versionen 3.x das entsprechende nUpdateVersionAttribute, das Du unten definiert hast. Da kannst Du das eintragen und dann wird das entsprechend geparst.
      1.1.0.0 Beta 2 wäre dann am Einfachsten 1.1b2, da Du die Nuller weglassen kannst. :)
      Edit: Ja, genau. Dann haste es ja selber hinbekommen. :P

      In Version 4.x wird das Versionierungssystem ja über Updatekanäle laufen, sodass es dann möglich sein wird, auf das Attribut zu verzichten und die AssemblyVersion alleine zu nutzen (wird dann natürlich automatisch ausgelesen).

      github.com/ProgTrade/nUpdate/b….0/nUpdate/Updater.cs#L54
      github.com/ProgTrade/nUpdate/b….0/nUpdate/Updater.cs#L75
      (Zeile 77 muss dann natürlich noch angepasst werden)
      github.com/ProgTrade/nUpdate/b…date/UpdateVersion.cs#L10

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

      gibt es eine Möglichkeit abzufragen, ob ein Update gefunden wurde oder nicht?
      Mein Problem ist nämlich derzeit folgendes:

      Wenn ein Update gefunden wurde & man es installieren möchte, schließt sich die Form nicht, da ich das verhindere, meine Idee zur Lösung des Problems wäre also: Wenn der Nutzer ein Update installieren möchte, wird die Verhinderung die Form zu schließen "deaktiviert".

      Wie könnte ich das also realisieren?

      Gruß,
      Tim

      DerTim schrieb:

      die Form
      Was ist das? Also von welcher Form reden wir hier?
      Ich verstehe die Situation gerade nicht so ganz. Bitte erläutere das genauer.

      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 :!:
      Also:
      Update gefunden -> Update heruntergeladen -> Update kann nicht beendet werden, da Dateien von anderen Programm genutzt wird

      vermutliches Problem:

      VB.NET-Quellcode

      1. Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
      2. Me.WindowState = FormWindowState.Minimized
      3. e.Cancel = True
      4. ShowInTaskbar = False
      5. End Sub


      Meine Idee: ein If einzufügen, welche überprüft ob Update gefunden, wenn ja, oben geposteten Code ignorieren, wenn nein code ausführen.


      Ich hoff ich habs damit besser erklärt :rolleyes:
      UpdateManager.SearchForUpdates gibt Dir einen Boolean zurück. Also einfach die Methode vor dem Updaten an sich ausführen und das Ergebnis einfach auswerten.

      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 keine Ahnung was ich falsch mache, nutze ich manager.SearchForUpdates und es existiert kein Update kommt false zurück, existiert jedoch eins kommt ein Fehler...

      Quellcode

      1. System.ArgumentException was unhandled
      2. HResult=-2147024809
      3. Message=Ein Element mit dem gleichen Schlüssel wurde bereits hinzugefügt.
      4. Source=mscorlib
      5. StackTrace:
      6. bei System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
      7. bei System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
      8. bei System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
      9. bei nUpdate.Updating.UpdateManager.SearchForUpdates() in C:\Users\Dominic\Documents\nUpdate\nUpdate\Updating\UpdateManager.cs:Zeile 287.
      10. bei Form1.Form1_Load(Object sender, EventArgs e) in Form1.vb:Zeile 21.
      11. bei System.Windows.Forms.Form.OnLoad(EventArgs e)
      12. bei System.Windows.Forms.Form.OnCreateControl()
      13. bei System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
      14. bei System.Windows.Forms.Control.CreateControl()
      15. bei System.Windows.Forms.Control.WmShowWindow(Message& m)
      16. bei System.Windows.Forms.Control.WndProc(Message& m)
      17. bei System.Windows.Forms.ScrollableControl.WndProc(Message& m)
      18. bei System.Windows.Forms.ContainerControl.WndProc(Message& m)
      19. bei System.Windows.Forms.Form.WmShowWindow(Message& m)
      20. bei System.Windows.Forms.Form.WndProc(Message& m)
      21. bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
      22. bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
      23. bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
      24. InnerException:

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

      Ja, aber das kann eigentlich nicht sein. Die CleanUp-Methode wird weiterhin aufgerufen.
      Hast Du sicher die neueste DLL eingebunden?

      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. Dim manager As New UpdateManager("Code aus Administrationsprogramm)
      2. Dim updaterUI As New UpdaterUI(manager, WindowsFormsSynchronizationContext.Current)
      3. updaterUI.ShowUserInterface()
      4. updaterUI.UseHiddenSearch = True
      5. Label3.Text = manager.SearchForUpdates


      Rufe über Label3.Text dann das ergebnis in einer anderen sub auf...

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

      updaterUI.UseHiddenSearch = True muss vor den ShowUserInterface()-Aufruf.
      Dann: Option Strict On! Ein Boolean ist kein String. Den SearchForUpdates()-Aufruf musst Du vor dem UpdaterUI tätigen.

      Nutzt Du TAP?

      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 :!:
      Kann man das nicht vorher abfangen? Falsche Reihenfolge ist gut und recht aber das wäre natürlich gut wenn das irgendwie hervorkommen würde.


      Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.