Установить значок для задачи в списке переходов (Windows) - PullRequest
1 голос
/ 17 апреля 2019

Я пытаюсь настроить значок в разделе Задачи Список переходов для моего приложения 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'
    }
  ])

Ответы [ 2 ]

0 голосов
/ 18 апреля 2019

Я получил это работает. значок меняется в диспетчере задач, панели задач и само приложение Я использовал эту тему

Я убедился, что .exe и мой img находятся в одной папке. Все мои значки теперь изменены, кроме самого .exe.

0 голосов
/ 18 апреля 2019

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

...