mirror of
https://github.com/ElectronNET/Electron.NET.git
synced 2026-02-04 05:34:51 +00:00
Page:
Custom_main
Pages
ASP.Net
About
Advanced Migration Topics
App
AutoUpdater
Clipboard
Configuration
Console App
Custom_main
Debugging
Dialog
Dock
GlobalShortcut
Home
HostHook
IpcMain
Menu
Migration Checks
Migration Guide
NativeTheme
Notification
Overview
Package Building
Package Description
PowerMonitor
Screen
Shell
Startup Methods
System Requirements
Tray
WebContents
What's New
WindowManager
Clone
1
Custom_main
github-actions[bot] edited this page 2025-12-07 17:08:51 +00:00
This guide explains how to include and use a custom_main.js file in your Electron.NET application for advanced Electron/Node.js customization.
Why use custom_main.js?
- 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
Step-by-Step Process
1. Create the custom_main.js file
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;
};
2. Configure your .csproj to copy custom_main.js to output
Add this to your .csproj file:
<ItemGroup>
<None Update="electron\custom_main.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<TargetPath>.electron\custom_main.js</TargetPath>
</None>
</ItemGroup>
3. Build and run your app
Use the standard build/run commands:
dotnet build
dotnet run
Electron.NET will automatically load and execute your custom_main.js before initializing the .NET backend.
Advanced Usage
Use environment variables to control features:
const env = process.env.ASPNETCORE_ENVIRONMENT || 'Production';
if (env === 'Development') { /* enable dev features */ }
Notes
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
- API Overview

- Electron.App

- Electron.Dialog

- Electron.Menu

- Electron.WindowManager

- Electron.Shell

- Electron.Screen

- Electron.Notification

- Electron.Tray

- Electron.Clipboard

- Electron.Dock

- Electron.HostHook

- Electron.IpcMain

- Electron.GlobalShortcut

- Electron.AutoUpdater

- Electron.NativeTheme

- Electron.PowerMonitor

Want to contribute to this documentation? Please fork and create a PR! The Wiki is autogenerated from the /docs content in the repository.