无法覆盖mac os electron菜单上的应用程序名称

无法覆盖mac os electron菜单上的应用程序名称,electron,Electron,这次我的头撞到墙上了。我正在尝试覆盖演示electron应用程序的名称,以给它一个自定义名称,而不仅仅是electron。我为此创建了一个模块: const {app, Menu} = require('electron') const template = [ { label: 'New Name', submenu:[ { label: 'Test', click

这次我的头撞到墙上了。我正在尝试覆盖演示electron应用程序的名称,以给它一个自定义名称,而不仅仅是
electron
。我为此创建了一个模块:

const {app, Menu} = require('electron')

const template = [
    {
        label: 'New Name',
        submenu:[
            {
                label: 'Test',
                click: (menuItem, browserWindow, event) => {
                    console.log('menu item clicked')
                }
            },
            {role: 'quit'}
        ]
    },
    {
        label: 'test test',
        submenu:[
            {
                label: 'Test',
                click: (menuItem, browserWindow, event) => {
                    console.log('menu item clicked')
                }
            },
            {role: 'quit'}
        ]
    }
]

installApplicationMenu = function (){
    const menu = Menu.buildFromTemplate(template)
    let result = Menu.setApplicationMenu(menu)
}


module.exports = {
    installApplicationMenu
}
我在创建窗口后调用此模块:

const {app, BrowserWindow} = require('electron')
const path = require('path')
const url = require('url')

const {installApplicationMenu} = require('./MenuInstaller')


require('electron-reload')(__dirname,{
    electron: path.join(__dirname, 'node_modules', '.bin', 'electron')
})

let win


function createWindow(){
    win = new BrowserWindow({
        width: 800,
        height: 600
    })

    win.loadURL(
        url.format({
            pathname: path.join(__dirname, 'index.html'),
            protocol: 'file:',
            slashes: true
        })
    )

    win.on('closed', () => {
        win = null
    })

}

app.on('ready', function (){
    createWindow()
    installApplicationMenu()
})


app.on('activate', () => {
    if(win === null) createWindow()
})
当我这样做时,第二个菜单集得到它的自定义名称
test
,但主菜单名仍然是
Electron

我一直在将代码与我创建的另一个应用程序进行比较,在这个应用程序中,我可以覆盖默认名称,但在这种情况下,我无法发现是什么原因使覆盖无法工作


有什么想法吗?

在创建浏览器窗口或使用实例方法
win.setTitle(“我的应用程序”)
时,您可以通过向传递的选项添加
title
来设置名称。默认值为
Electron
()


在将近2年没有使用电子产品之后,我刚刚重新开始使用它。据我所知,除非打包应用程序,否则无法更改应用程序名称。试试像这样的电子包装机:

在开发环境中使用运行应用程序时

./node_modules/.bin/electron main.js

实际上,您正在运行一个预构建的
electron
可执行文件,该文件运行您指定的文件。因此,在本例中,操作系统将显示应用程序构建和打包时使用的名称

如果您希望更改它,则需要对其进行打包。i、 e.构建自己的可分发包。要做到这一点,有一个很棒的软件包

所以安装它

npm install --save-dev electron-builder
然后构建包

./node_modules/.bin/build -m
不要忘记在
package.json
中设置
productName
。例如,它将显示在macOS上的菜单中

-m
用于macOS


您将在
/dist
目录中看到包。但是,如果您有自定义应用程序格式,它可能无法生成,因此有关应用程序结构的详细信息,请参阅或。

这将设置
浏览器窗口的名称
,而不是
os x上的应用程序菜单名称
npm install --save-dev electron-builder
./node_modules/.bin/build -m