通过 electron-forge electronPackagerConfig 设置平台依赖图标
Setting platform dependant icon via electron-forge electronPackagerConfig
使用 electron-forge 构建桌面应用程序。该应用程序是为 OSX 和 Windows 构建的。在我的 package.json 里面,我有:
"electronPackagerConfig": {
"icon": "src/images/icon/app_icon_osx.icns"
}
当我在 Windows 上构建时,我必须手动将 package.json 中的图标从 "app_icon_osx.icns" 更改为 "app_icon_win.ico"。
如果我尝试对两个平台都使用 "app_icon.png",图标不会在 OSX 上显示,并且构建失败并在 Windows 上显示 "rcedit.exe failed with exit code 1. Fatal error: Unable to set icon"。
我在项目的一个文件夹中有所有 3 个版本的图标(icns、ico、png)。因为我正在使用 electron-forge,所以我似乎无法使用 electron packager 的 --icon 参数。
有没有一种方法可以传递图标以用作命令行参数,而不是硬编码在 package.json 中?或者我可以为两个平台使用相同的 png 的方法?
该扩展是为每个平台自动添加的。只需像这样为每个平台提供一个图标:app_icon.icns
、app_icon.ico
、...
然后更新您的配置:
"electronPackagerConfig": {
"icon": "src/images/icon/app_icon"
}
已接受的答案适用于 macOS 和 Windows,但对于 Linux,您必须执行如下操作:
在制作器中设置应用图标(仅适用于应用列表):
{
name: "@electron-forge/maker-deb",
config: {
options: {
icon: "./src/images/icon.png",
},
},
},
创建一个资产文件夹(或任何东西)并在构建期间使用 webpack.main.config.js
中的 copy-webpack-plugin
复制它:
const CopyPlugin = require("copy-webpack-plugin");
module.exports = {
// ...
plugins: [new CopyPlugin([{ from: "./assets", to: "assets" }])],
};
您现在可以从主进程访问此文件夹中的任何文件,因此在创建 BrowserWindow
时参考图标 here
mainWindow = new BrowserWindow({
// ...
icon: path.join(__dirname, "assets/icon.png"),
});
在forge.config.js
中,执行:
const path = require('path')
module.exports = {
packagerConfig: {
icon: path.join(__dirname, 'favicon'),
},
}
重要提示:
-
此设置在 运行 宁 electron-forge start
时不更改图标。
如果设置正确,还是看不到正确的图标,可能是图标缓存问题。
如果在 Windows 10 上,运行 ie4uinit -show
在命令行中将显示最新的图标。
使用 electron-forge 构建桌面应用程序。该应用程序是为 OSX 和 Windows 构建的。在我的 package.json 里面,我有:
"electronPackagerConfig": {
"icon": "src/images/icon/app_icon_osx.icns"
}
当我在 Windows 上构建时,我必须手动将 package.json 中的图标从 "app_icon_osx.icns" 更改为 "app_icon_win.ico"。
如果我尝试对两个平台都使用 "app_icon.png",图标不会在 OSX 上显示,并且构建失败并在 Windows 上显示 "rcedit.exe failed with exit code 1. Fatal error: Unable to set icon"。
我在项目的一个文件夹中有所有 3 个版本的图标(icns、ico、png)。因为我正在使用 electron-forge,所以我似乎无法使用 electron packager 的 --icon 参数。
有没有一种方法可以传递图标以用作命令行参数,而不是硬编码在 package.json 中?或者我可以为两个平台使用相同的 png 的方法?
该扩展是为每个平台自动添加的。只需像这样为每个平台提供一个图标:app_icon.icns
、app_icon.ico
、...
然后更新您的配置:
"electronPackagerConfig": {
"icon": "src/images/icon/app_icon"
}
已接受的答案适用于 macOS 和 Windows,但对于 Linux,您必须执行如下操作:
在制作器中设置应用图标(仅适用于应用列表):
{
name: "@electron-forge/maker-deb",
config: {
options: {
icon: "./src/images/icon.png",
},
},
},
创建一个资产文件夹(或任何东西)并在构建期间使用 webpack.main.config.js
中的 copy-webpack-plugin
复制它:
const CopyPlugin = require("copy-webpack-plugin");
module.exports = {
// ...
plugins: [new CopyPlugin([{ from: "./assets", to: "assets" }])],
};
您现在可以从主进程访问此文件夹中的任何文件,因此在创建 BrowserWindow
时参考图标 here
mainWindow = new BrowserWindow({
// ...
icon: path.join(__dirname, "assets/icon.png"),
});
在forge.config.js
中,执行:
const path = require('path')
module.exports = {
packagerConfig: {
icon: path.join(__dirname, 'favicon'),
},
}
重要提示:
此设置在 运行 宁
electron-forge start
时不更改图标。如果设置正确,还是看不到正确的图标,可能是图标缓存问题。
如果在 Windows 10 上,运行ie4uinit -show
在命令行中将显示最新的图标。