From b4d8a2a64790b23bf6798735523acd18a4f73b26 Mon Sep 17 00:00:00 2001 From: Richard Date: Mon, 14 Sep 2026 12:16:33 +0200 Subject: [PATCH] Update-Pruefung regelmaessig und ab Werk an, Installation nur auf Klick Richards Vorgabe vom 14.09.2026 (#587): Updates nie automatisch installieren, aber regelmaessig pruefen und darauf hinweisen. Bisher pruefte der Desktop genau einmal beim Start, das WebUI nur beim Seitenaufruf, und ab Werk gar nicht (UpdateCheckEnabled=false). Eine wochenlang laufende oder frisch installierte Anwendung erfuhr nie von einem neuen Release. - UpdateCheckEnabled ab Werk true, neu UpdateCheckIntervalHours (6, 1..168) - UpdateCheckBackgroundService: erste Pruefung nach 30 s, dann im Takt; laeuft auch ohne WebUI und kopflos; Hinweis im Log einmal je neuer Fassung - Registrierung ueber AddPolyTraderUpdateCheck, nicht mehr am WebUI - Desktop-Banner haengt an UpdateStatusService.Checked; "Spaeter" blendet bis zur naechsten neueren Fassung aus - WebUI-Banner holt alle 10 Minuten den vorgehaltenen Stand Auf der Linux-VM geprueft: 0.1.9 ohne Handeinstellung erkennt 0.2.0, ein Hinweis im Log, Banner erscheint, "Spaeter" blendet aus, Beenden in 0,1 s. Co-Authored-By: Claude Opus 5 --- src/PolyTrader.App.Avalonia/Program.cs | 3 + .../Views/LauncherWindow.axaml.cs | 86 +++++++---------- src/PolyTrader.App.Avalonia/appsettings.json | 4 +- .../Configuration/DeploymentcenterOptions.cs | 11 ++- .../Hosting/WebUiHostingExtensions.cs | 5 +- .../Updates/UpdateCheckBackgroundService.cs | 95 +++++++++++++++++++ .../Updates/UpdateStatusService.cs | 18 +++- src/PolyTrader.Web/wwwroot/js/app.js | 3 + .../WebUi/UpdateStatusTests.cs | 74 +++++++++++++++ 9 files changed, 241 insertions(+), 58 deletions(-) create mode 100644 src/PolyTrader.Web/Updates/UpdateCheckBackgroundService.cs diff --git a/src/PolyTrader.App.Avalonia/Program.cs b/src/PolyTrader.App.Avalonia/Program.cs index b64c48e..92e39ae 100644 --- a/src/PolyTrader.App.Avalonia/Program.cs +++ b/src/PolyTrader.App.Avalonia/Program.cs @@ -368,6 +368,9 @@ namespace PolyTrader.App.Avalonia services.AddHostedService(sp => sp.GetRequiredService()); services.AddHostedService(sp => sp.GetRequiredService()); + // #587: regelmäßige Update-Prüfung mit Hinweis - installiert nie selbst. + PolyTrader.Web.Updates.UpdateCheckServiceCollectionExtensions.AddPolyTraderUpdateCheck(services); + // Shell-Zustand (Fensterverwaltung). Auch im kopflosen Betrieb harmlos. services.AddSingleton(); }) diff --git a/src/PolyTrader.App.Avalonia/Views/LauncherWindow.axaml.cs b/src/PolyTrader.App.Avalonia/Views/LauncherWindow.axaml.cs index d4f43f1..9b421a2 100644 --- a/src/PolyTrader.App.Avalonia/Views/LauncherWindow.axaml.cs +++ b/src/PolyTrader.App.Avalonia/Views/LauncherWindow.axaml.cs @@ -20,6 +20,7 @@ using PolyTrader.Core.Modularity; using PolyTrader.Core.Persistence; using PolyTrader.Core.Security; using PolyTrader.Modules.Supervisor.Persistence; +using PolyTrader.Web.Updates; using PolyTraderSharp; using PolyTraderSharp.Models; using PolyTraderSharp.Services; @@ -51,8 +52,11 @@ namespace PolyTrader.App.Avalonia.Views private int _statusTicks; - /// Ergebnis der letzten Update-Prüfung – für den Klick auf „Jetzt installieren …". - private UpdateCheckResult? _updateCheck; + /// Fassung aus der letzten Update-Prüfung – für den Klick auf „Jetzt installieren …". + private string? _updateVersion; + + /// Mit „Später" ausgeblendete Fassung – das Banner kommt erst für eine noch neuere wieder. + private string? _dismissedVersion; public LauncherWindow() => AvaloniaXamlLoader.Load(this); @@ -84,16 +88,25 @@ namespace PolyTrader.App.Avalonia.Views this.FindControl