From 497e6aa4235b15539f1aad156cbc534e4ec14c15 Mon Sep 17 00:00:00 2001 From: Aeon Date: Tue, 17 Feb 2026 19:31:06 +0100 Subject: [PATCH 1/4] Add check for existing preload script path before overriding --- src/ElectronNET.Host/api/browserWindows.js | 4 ++-- src/ElectronNET.Host/api/browserWindows.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ElectronNET.Host/api/browserWindows.js b/src/ElectronNET.Host/api/browserWindows.js index 5bda56fa..c707deec 100644 --- a/src/ElectronNET.Host/api/browserWindows.js +++ b/src/ElectronNET.Host/api/browserWindows.js @@ -220,8 +220,8 @@ module.exports = (socket, app) => { webPreferences: { nodeIntegration: true, contextIsolation: false }, }; } - if (options.isRunningBlazor) { - options.webPreferences["preload"] = path.join(__dirname, "..", "scripts", "blazor-preload.js"); + if (options.isRunningBlazor && !options.webPreferences.preload) { + options.webPreferences.preload = path.join(__dirname, "..", "scripts", "blazor-preload.js"); } delete options.isRunningBlazor; // we dont want to recreate the window when watch is ready. diff --git a/src/ElectronNET.Host/api/browserWindows.ts b/src/ElectronNET.Host/api/browserWindows.ts index a8cd92d0..3050d131 100644 --- a/src/ElectronNET.Host/api/browserWindows.ts +++ b/src/ElectronNET.Host/api/browserWindows.ts @@ -235,8 +235,8 @@ export = (socket: Socket, app: Electron.App) => { }; } - if (options.isRunningBlazor) { - options.webPreferences["preload"] = path.join( + if (options.isRunningBlazor && !options.webPreferences.preload) { + options.webPreferences.preload = path.join( __dirname, "..", "scripts", From 850d8f69025512ca0389dc635339f5dabdfff683 Mon Sep 17 00:00:00 2001 From: Aeon Date: Tue, 17 Feb 2026 19:48:12 +0100 Subject: [PATCH 2/4] Add documentation for preload script and warning for Blazor --- docs/Using/Configuration.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docs/Using/Configuration.md b/docs/Using/Configuration.md index 63761a9e..2e0e1e17 100644 --- a/docs/Using/Configuration.md +++ b/docs/Using/Configuration.md @@ -85,6 +85,26 @@ BrowserWindowOptions browserWindowOptions = new BrowserWindowOptions ``` +### Preload Script + +If you require the use of a [preload script](https://www.electronjs.org/docs/latest/tutorial/tutorial-preload), you can specify the file path of the script when creating a new window like so: + +```csharp +WebPreferences wp = new WebPreferences(); +wp.Preload = "path/to/preload.js"; +BrowserWindowOptions browserWindowOptions = new BrowserWindowOptions +{ + WebPreferences = wp +}; +``` + +> [!IMPORTANT] +> When using a preload script _AND_ running a Blazor app, the following lines must be added to the preload script: +> ```js +> global.process = undefined; +> global.module = undefined; +> ``` + ## 🚀 Next Steps From d5df30718b7aec3436bd3dfd7a59ca07cdd5ab23 Mon Sep 17 00:00:00 2001 From: Aeon Date: Tue, 17 Feb 2026 23:32:55 +0100 Subject: [PATCH 3/4] Update documentation to reflect current approach --- docs/Using/Configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Using/Configuration.md b/docs/Using/Configuration.md index 2e0e1e17..55a7cd63 100644 --- a/docs/Using/Configuration.md +++ b/docs/Using/Configuration.md @@ -99,7 +99,7 @@ BrowserWindowOptions browserWindowOptions = new BrowserWindowOptions ``` > [!IMPORTANT] -> When using a preload script _AND_ running a Blazor app, the following lines must be added to the preload script: +> When using a preload script _AND_ running a Blazor app, `IsRunningBlazor` must be set to `false` (or removed) and the following lines must be added to the preload script: > ```js > global.process = undefined; > global.module = undefined; From 3850a71579cef3df51f762b17b0ea9852b7be6f5 Mon Sep 17 00:00:00 2001 From: Aeon Date: Tue, 17 Feb 2026 23:33:13 +0100 Subject: [PATCH 4/4] Revert "Add check for existing preload script path before overriding" This reverts commit 497e6aa4235b15539f1aad156cbc534e4ec14c15. --- src/ElectronNET.Host/api/browserWindows.js | 4 ++-- src/ElectronNET.Host/api/browserWindows.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ElectronNET.Host/api/browserWindows.js b/src/ElectronNET.Host/api/browserWindows.js index c707deec..5bda56fa 100644 --- a/src/ElectronNET.Host/api/browserWindows.js +++ b/src/ElectronNET.Host/api/browserWindows.js @@ -220,8 +220,8 @@ module.exports = (socket, app) => { webPreferences: { nodeIntegration: true, contextIsolation: false }, }; } - if (options.isRunningBlazor && !options.webPreferences.preload) { - options.webPreferences.preload = path.join(__dirname, "..", "scripts", "blazor-preload.js"); + if (options.isRunningBlazor) { + options.webPreferences["preload"] = path.join(__dirname, "..", "scripts", "blazor-preload.js"); } delete options.isRunningBlazor; // we dont want to recreate the window when watch is ready. diff --git a/src/ElectronNET.Host/api/browserWindows.ts b/src/ElectronNET.Host/api/browserWindows.ts index 3050d131..a8cd92d0 100644 --- a/src/ElectronNET.Host/api/browserWindows.ts +++ b/src/ElectronNET.Host/api/browserWindows.ts @@ -235,8 +235,8 @@ export = (socket: Socket, app: Electron.App) => { }; } - if (options.isRunningBlazor && !options.webPreferences.preload) { - options.webPreferences.preload = path.join( + if (options.isRunningBlazor) { + options.webPreferences["preload"] = path.join( __dirname, "..", "scripts",