Currently, all proprietary command line switches are checked before the custom_main.js script can run, thus making it impossible to modify those specific switches.
|
if (app.commandLine.hasSwitch('manifest')) { |
|
manifestJsonFileName = app.commandLine.getSwitchValue('manifest'); |
|
} |
|
|
|
console.log('Entry!!!: '); |
|
|
|
if (app.commandLine.hasSwitch('unpackedelectron')) { |
|
unpackedelectron = true; |
|
} |
|
else if (app.commandLine.hasSwitch('unpackeddotnet')) { |
|
unpackeddotnet = true; |
|
} |
|
else if (app.commandLine.hasSwitch('dotnetpacked')) { |
|
dotnetpacked = true; |
|
} |
|
|
|
if (app.commandLine.hasSwitch('electronforcedport')) { |
|
electronforcedport = app.commandLine.getSwitchValue('electronforcedport'); |
|
} |
|
|
|
// Custom startup hook: look for custom_main.js and invoke its onStartup(host) if present. |
|
// If the hook returns false, abort Electron startup. |
|
try { |
|
const fs = require('fs'); |
|
const customMainPath = path.join(__dirname, 'custom_main.js'); |
|
if (fs.existsSync(customMainPath)) { |
|
const customMain = require(customMainPath); |
|
if (customMain && typeof customMain.onStartup === 'function') { |
|
const continueStartup = customMain.onStartup(globalThis); |
|
if (continueStartup === false) { |
|
////console.log('custom_main.js onStartup returned false. Exiting Electron host.'); |
|
// Ensure the app terminates immediately before further initialization. |
|
// Use app.exit to allow Electron to perform its shutdown, fallback to process.exit. |
|
try { app.exit(0); } catch (err) { process.exit(0); } |
|
} |
|
} else { |
|
console.warn('custom_main.js found but no onStartup function exported.'); |
|
} |
|
} |
|
} catch (err) { |
|
console.error('Error while executing custom_main.js:', err); |
|
} |
It would be great, if the checks for the individual switches were moved below the custom_main.js handling, which would allow the script to potentially modify the command line switches. This change won't break any existing application but would allow users to, e.g., force a specific startup method (e.g., by also checking environment variables as shown in the wiki article).
On that note: there might be a better approach to force a startup method at compile-time, but this is currently the only realistic way to achieve this without requiring users to run the app with CLI arguments (or create shortcuts with CLI arguments), specifically .NET-first packaged execution.
Currently, all proprietary command line switches are checked before the
custom_main.jsscript can run, thus making it impossible to modify those specific switches.Electron.NET/src/ElectronNET.Host/main.js
Lines 27 to 68 in 456135a
It would be great, if the checks for the individual switches were moved below the
custom_main.jshandling, which would allow the script to potentially modify the command line switches. This change won't break any existing application but would allow users to, e.g., force a specific startup method (e.g., by also checking environment variables as shown in the wiki article).On that note: there might be a better approach to force a startup method at compile-time, but this is currently the only realistic way to achieve this without requiring users to run the app with CLI arguments (or create shortcuts with CLI arguments), specifically .NET-first packaged execution.