-
-
Notifications
You must be signed in to change notification settings - Fork 744
Custom_main
github-actions[bot] edited this page Dec 7, 2025
·
1 revision
This guide explains how to include and use a custom_main.js file in your Electron.NET application for advanced Electron/Node.js customization.
- Register custom protocol handlers (e.g.,
myapp://) — protocols must be registered before the app is fully initialized - Integrate Node.js modules (e.g., telemetry, OS APIs)
- Control startup logic (abort, environment checks)
- Set up IPC messaging or preload scripts
Place your custom logic in electron/custom_main.js:
module.exports.onStartup = function(host) {
// Example: Register a global shortcut for opening dev tools
const { app, globalShortcut, BrowserWindow } = require('electron');
app.on('ready', () => {
const ret = globalShortcut.register('Control+Shift+I', () => {
BrowserWindow.getAllWindows().forEach(win => win.webContents.openDevTools());
console.log('Ctrl+Shift+I is pressed: DevTools opened!');
});
});
app.on('will-quit', () => {
globalShortcut.unregisterAll();
});
return true;
};Add this to your .csproj file:
<ItemGroup>
<None Update="electron\custom_main.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<TargetPath>.electron\custom_main.js</TargetPath>
</None>
</ItemGroup>Use the standard build/run commands:
dotnet build
dotnet runElectron.NET will automatically load and execute your custom_main.js before initializing the .NET backend.
Use environment variables to control features:
const env = process.env.ASPNETCORE_ENVIRONMENT || 'Production';
if (env === 'Development') { /* enable dev features */ }-
custom_main.jsmust use CommonJS syntax (module.exports.onStartup = ...). - Place the file in your source directory and copy it to
.electronusing.csproj. - Electron.NET will abort startup if
onStartupreturnsfalse.
Complete example is available here ElectronNetSampleApp
Want to contribute to this documentation? Please fork and create a PR! The Wiki is autogenerated from the /docs content in the repository.