电子:如何从默认菜单中删除菜单项?

electron: How to remove a menu item from the default menu?

目标

我正在尝试从 Electron 应用程序的菜单中删除 Help 菜单。

我不想 setApplicationMenu 我自己的,因为使用默认菜单很好,除了帮助,它指向 Electron 自己的帮助页面。

尝试次数

我尝试了以下方法,但都失败了:

删除尾部项目,即帮助

var menu = Menu.getApplicationMenu();
menu.items.pop();

使其不可见

var menu = Menu.getApplicationMenu();
for(var i=0; i<menu.items.length; i++) {
    if (menu.items[i].role == 'help') {
       menu.items[i].visible = false;
       break;
    }
}

删除菜单

mainWindow.removeMenu();

这在我的 electron 版本 10.1.0 的 macOS 上不起作用。

问题

怎么了?我应该创建一个模板吗?

修改默认菜单后必须使用Menu.setApplicationMenu

const menu = Menu.getApplicationMenu(); // get default menu

menu.items.find((item) => item.role === "help").visible = false; // modify it

Menu.setApplicationMenu(menu); // set the modified menu

注意:根据我的经验,Menu.getApplicationMenu() 将 return null 如果它在应用 ready 事件之前被调用

menuItem.visible 在 Electron 13 中不起作用。相反,我构建了一个没有帮助项的新菜单。

  const menu = Menu.getApplicationMenu()
  const items = menu?.items.filter((item) => item.role !== 'help')
  Menu.setApplicationMenu(Menu.buildFromTemplate(items))