我正在尝试在Jump List的“任务”部分为我的Electron应用设置图标。我已经成功在任务栏中设置了一个图标。但是我也想在跳转列表的“任务”部分中设置我的图标。我怎样才能做到这一点?
我已经尝试使用app.setUserTask()方法并尝试在JSON文件中设置图标。任务栏中的图标及其自身的图标正在工作。我也尝试使用.ico和.png。
说明和标题有效,所以我想我在路径中做错了什么或类似的事情。 ico和png图像与我的main.js(用于Electron)位于同一目录中。
app.setUserTasks([
{
program: process.execPath,
arguments: '--new-window',
iconPath: path.join(__dirname,"icon.ico").execPath,
iconIndex: 1,
title: 'myApp',
description: 'myApp'
}
])
答案 0 :(得分:0)
首先,您似乎在iconPath
中混合了两件事。根据{{3}},您可以使用process.execPath
来引用应用程序可执行文件或使用任何其他绝对路径。由于path.join
返回一个字符串,因此它没有execPath
属性。其次,我将iconIndex
更改为0。
以下内容已在Windows 7和Electron 4.1.4上进行了测试:
看来,PNG文件根本不起作用–您需要将ICO文件用于跳转列表。此外,无法从asar
中获取图标。这意味着您需要直接在文件系统中使用ICO,并且需要为其提供绝对路径。
完整的代码示例:
const {app, BrowserWindow} = require('electron')
const path = require('path')
const os = require('os')
let my_path
my_path = "C:\\icon.png" // doesn't work
my_path = "C:\\icon.ico" // works
my_path = process.execPath // works (uses application icon)
my_path = path.join(__dirname, "icon.png") // doesn't work, translates to C:\path\to\app\resources\app.asar\icon.png
my_path = path.join(__dirname, "icon.ico") // doesn't work, translates to C:\path\to\app\resources\app.asar\icon.ico
my_path = path.join(app.getAppPath(), "icon.ico") // doesn't work, translates to C:\path\to\app\resources\app.asar\icon.ico
my_path = path.join(__dirname, "..", "..", "icon.ico") // works if icon.ico is in the same directory
// as the exe "packaged" by electron-packager, assuming icon.ico is copied in
if (os.platform() == "win32") {
app.setUserTasks([{
program: process.execPath,
arguments: '--new-window',
iconPath: my_path,
iconIndex: 0,
title: 'My App',
description: 'Description of myApp'
}])
}
let mainWindow
app.on('ready', () => {
mainWindow = new BrowserWindow()
mainWindow.on('closed', () => {
mainWindow = null
app.quit()
})
})
在这里,doesn't work
表示Windows显示默认图标。我确保icon.png
和icon.ico
在app.asar
中。
答案 1 :(得分:0)
我知道了。图标在任务管理器,任务栏和应用中已更改 我用了这个topic
我确保.exe和我的img位于同一文件夹中。我的所有图标现在都已更改,除了.exe本身。