Reputation: 561
I get a strange error when running a packaged Electron app on Windows 10.
When I press Ok on this error, the application boots up, but without a menu. If I run the same application using electron .
it works perfectly, it has a menu.
The error occurs here:
var filemenu = Menu.getApplicationMenu().items[0].submenu;
filemenu.items[0].visible = false;
filemenu.append(new MenuItem({ label: 'Build Project', click: function () { buildProject(); } }));
I'm trying to edit the default File menu and add a "Build Project" item.
This is my first attempt to package an Electron app so I welcome any feedback as to what went wrong?
Upvotes: 1
Views: 350
Reputation: 561
It seems that the default menu is not added to the app when in production.
The solution is to check if you are in development:
https://www.npmjs.com/package/electron-is-dev
// Check if we are in development
var isDev = require('electron-is-dev');
If in production, you have to construct the menu from scratch.
if(isDev){
// In development
// modify existing menu
}else{
// In production
// construct menu from scratch
var template = [
{
label: "File",
submenu: [
{
label: "Exit",
click: function () { quit(); }
}
]
},
{
label: "Project",
submenu: [
{
label: "Delete",
click: function () { deleteProject(); }
},
{
label: "Build",
click: function () { buildProject(); }
}
]
}
];
// build menu from template
var menu = Menu.buildFromTemplate(template);
// set menu for main window
mainWindow.setMenu(menu);
};
Upvotes: 2