Прежде всего, похоже, что вы смешали две вещи в своем iconPath
. Согласно Electron docs , вы можете использовать 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
.