2017-01-09 42 views
1

我在这一块上撞墙。我试图覆盖演示电子应用的名称,以给它一个自定义名称,而不仅仅是Electron。我创建了一个模块,这样做:无法在Mac OS电子菜单上覆盖应用程序名称

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 test但自定义名称主菜单名称仍然Electron

screenshot of menus not set

我的代码被比作不同的应用程序I C在我能够覆盖默认名称的地方重新考虑,并且我无法发现在这种情况下保留覆盖的功能。

任何想法?

回答

2

当您在开发环境中使用时运行您的应用程序;

./node_modules/.bin/electron main.js 

electron main.js 

你实际上是运行在运行您指定文件预建electron可执行文件。因此,在这种情况下,操作系统将显示应用程序的构建和打包名称。

如果你想改变它,你需要打包它。即构建您自己的可分发软件包。要做到这一点,有一个真棒包electron-builder

所以安装它;

npm install --save-dev electron-builder 

然后构建包;

./node_modules/.bin/build -m 

不要忘记设置productNamepackage.json。例如,它将在macOS上的菜单中显示。

-m适用于macOS。

而你会在/dist目录中看到包。但是,如果您有自定义应用程序格式,则可能无法构建,因此有关应用程序结构的详细信息,请参阅READMEwiki

0

在创建BrowserWindow或使用实例方法win.setTitle("My App")时,您可以通过将title添加到您传递的选项来设置名称。该默认值是ElectronSource

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

    // ... 
}