From c60bfec8918ea652620e17540f7ca96b17e8a38e Mon Sep 17 00:00:00 2001 From: Syed Mustafa Ahmed Naqvi Date: Sat, 23 May 2026 11:40:30 +0500 Subject: [PATCH] Update desktop host configuration Adds desktop host options for browser shutdown behavior, app-mode preference, browser profile directory, startup URL, and development overrides. --- Configuration/DesktopHostOptions.cs | 26 ++++++++++++++++++++++++++ appsettings.Development.json | 3 ++- appsettings.Example.json | 7 ++++++- appsettings.json | 7 ++++++- 4 files changed, 40 insertions(+), 3 deletions(-) diff --git a/Configuration/DesktopHostOptions.cs b/Configuration/DesktopHostOptions.cs index 275b398..65d4dc5 100644 --- a/Configuration/DesktopHostOptions.cs +++ b/Configuration/DesktopHostOptions.cs @@ -13,4 +13,30 @@ public sealed class DesktopHostOptions /// Optional URL to open. If empty, the first bound HTTP address from Kestrel is used. /// public string? BrowserUrl { get; init; } + + /// + /// When true (default for published desktop exe), stops the host when the launched browser window closes. + /// + public bool ExitWhenBrowserCloses { get; init; } = true; + + /// + /// Seconds to wait after the page unloads before shutdown (allows cancel on reload). + /// + public int BrowserShutdownDelaySeconds { get; init; } = 2; + + /// + /// Prefer Edge/Chrome app-mode window (trackable process) on Windows before the default browser. + /// + public bool PreferAppModeBrowser { get; init; } = true; + + /// + /// Dedicated Edge/Chrome profile directory so app-mode uses a trackable browser process. + /// + public string BrowserUserDataDir { get; init; } = + @"C:\Users\Public\AVSCartonShipmentVerifier\browser-profile"; + + /// + /// If the tracked browser process exits sooner than this, treat it as a launcher handoff (do not stop the app). + /// + public int MinimumBrowserProcessLifetimeSeconds { get; init; } = 5; } diff --git a/appsettings.Development.json b/appsettings.Development.json index 2c43f04..cc9a4ac 100644 --- a/appsettings.Development.json +++ b/appsettings.Development.json @@ -3,7 +3,8 @@ "VerificationDatabase": "Server=192.168.90.147;Port=3306;Database=UIND;User ID=utopia;Password=Utopia01;SslMode=None;Allow User Variables=True;" }, "DesktopHost": { - "LaunchBrowser": false + "LaunchBrowser": false, + "ExitWhenBrowserCloses": false }, "Logging": { "LogLevel": { diff --git a/appsettings.Example.json b/appsettings.Example.json index 68e2839..cb4e9d8 100644 --- a/appsettings.Example.json +++ b/appsettings.Example.json @@ -13,6 +13,11 @@ "DesktopHost": { "LaunchBrowser": true, - "BrowserUrl": "http://localhost:5000" + "BrowserUrl": "http://127.0.0.1:5000", + "ExitWhenBrowserCloses": true, + "BrowserShutdownDelaySeconds": 2, + "PreferAppModeBrowser": true, + "BrowserUserDataDir": "C:\\Users\\Public\\AVSCartonShipmentVerifier\\browser-profile", + "MinimumBrowserProcessLifetimeSeconds": 5 } } diff --git a/appsettings.json b/appsettings.json index 60863ec..9d926b8 100644 --- a/appsettings.json +++ b/appsettings.json @@ -9,7 +9,12 @@ }, "DesktopHost": { "LaunchBrowser": true, - "BrowserUrl": "" + "BrowserUrl": "http://127.0.0.1:5000", + "ExitWhenBrowserCloses": true, + "BrowserShutdownDelaySeconds": 2, + "PreferAppModeBrowser": true, + "BrowserUserDataDir": "C:\\Users\\Public\\AVSCartonShipmentVerifier\\browser-profile", + "MinimumBrowserProcessLifetimeSeconds": 5 }, "CartonVerification": { "TableName": "carton_verification_log",