我正撞在墙上撞到墙上。我试图覆盖演示电子应用的名称,为其提供自定义名称,而不仅仅是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 test
,但主菜单名称仍为Electron
:
我一直在将代码与我创建的其他应用程序进行比较,在那里我可以覆盖默认名称,而我无法发现在这种情况下保持覆盖的工作原理。
有什么想法吗?
答案 0 :(得分:19)
使用;
在开发环境中运行应用程序时./node_modules/.bin/electron main.js
或
electron main.js
您实际上正在运行预构建的 electron
可执行文件,该文件运行您指定的文件。因此,在这种情况下,操作系统将显示构建和打包应用程序的名称。
如果您想更改它,您需要打包它。即构建自己的可分发包。要做到这一点,有一个很棒的包electron-builder
所以安装它;
npm install --save-dev electron-builder
然后构建包;
./node_modules/.bin/build -m
不要忘记在
productName
中设置package.json
。例如,它将在macOS的菜单中显示。
-m
适用于macOS。
您将在/dist
目录中看到包。但是,如果您有自定义应用程序格式,则可能无法构建,因此请参阅README或wiki以获取有关应用程序结构的详细信息。
答案 1 :(得分:4)
我近两年没有使用它后才回到Electron。根据我的记忆,除非打包应用程序,否则您无法更改应用名称。试试像这个电子包装工具:https://github.com/electron-userland/electron-packager。