diff --git a/src/ElectronNET.API/Runtime/StartupManager.cs b/src/ElectronNET.API/Runtime/StartupManager.cs index 91fed9a..1903e45 100644 --- a/src/ElectronNET.API/Runtime/StartupManager.cs +++ b/src/ElectronNET.API/Runtime/StartupManager.cs @@ -54,15 +54,19 @@ { var isLaunchedByDotNet = LaunchOrderDetector.CheckIsLaunchedByDotNet(); var isUnPackaged = UnpackagedDetector.CheckIsUnpackaged(); + + // Check for SignalR mode via environment variable + var useSignalR = Environment.GetEnvironmentVariable("ELECTRON_USE_SIGNALR"); + var isSignalRMode = !string.IsNullOrEmpty(useSignalR) && useSignalR.Equals("true", StringComparison.OrdinalIgnoreCase); if (isLaunchedByDotNet) { if (isUnPackaged) { - return StartupMethod.UnpackedDotnetFirst; + return isSignalRMode ? StartupMethod.UnpackedDotnetFirstSignalR : StartupMethod.UnpackedDotnetFirst; } - return StartupMethod.PackagedDotnetFirst; + return isSignalRMode ? StartupMethod.PackagedDotnetFirstSignalR : StartupMethod.PackagedDotnetFirst; } else { diff --git a/src/ElectronNET.AspNet/API/WebHostBuilderExtensions.cs b/src/ElectronNET.AspNet/API/WebHostBuilderExtensions.cs index 70872eb..9ac4c66 100644 --- a/src/ElectronNET.AspNet/API/WebHostBuilderExtensions.cs +++ b/src/ElectronNET.AspNet/API/WebHostBuilderExtensions.cs @@ -66,7 +66,11 @@ // work as expected, see issue #952 Environment.SetEnvironmentVariable("ELECTRON_RUN_AS_NODE", null); - var webPort = PortHelper.GetFreePort(ElectronNetRuntime.AspNetWebPort ?? ElectronNetRuntime.DefaultWebPort); + // For SignalR modes, use port 0 for dynamic port assignment + var usePort0 = ElectronNetRuntime.StartupMethod == StartupMethod.PackagedDotnetFirstSignalR || + ElectronNetRuntime.StartupMethod == StartupMethod.UnpackedDotnetFirstSignalR; + + var webPort = usePort0 ? 0 : PortHelper.GetFreePort(ElectronNetRuntime.AspNetWebPort ?? ElectronNetRuntime.DefaultWebPort); ElectronNetRuntime.AspNetWebPort = webPort; // check for the content folder if its exists in base director otherwise no need to include diff --git a/src/ElectronNET.Samples.ElectronHostHook/Properties/electron-builder.json b/src/ElectronNET.Samples.ElectronHostHook/Properties/electron-builder.json new file mode 100644 index 0000000..41f483c --- /dev/null +++ b/src/ElectronNET.Samples.ElectronHostHook/Properties/electron-builder.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://raw.githubusercontent.com/electron-userland/electron-builder/refs/heads/master/packages/app-builder-lib/scheme.json", + "compression": "maximum", + "linux": { + "target": [ + "tar.xz" + ], + "executableArgs": [ "--no-sandbox" ], + "artifactName": "${name}-${arch}-${version}.${ext}" + }, + "win": { + "target": [ + { + "target": "portable", + "arch": "x64" + } + ] + } +} \ No newline at end of file