在跳转列表中为任务设置图标(Windows)

时间:2019-04-17 19:20:45

标签: icons electron jump-list

我正在尝试在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'
    }
  ])

2 个答案:

答案 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.pngicon.icoapp.asar中。

答案 1 :(得分:0)

我知道了。图标在任务管理器,任务栏和应用中已更改 我用了这个topic

我确保.exe和我的img位于同一文件夹中。我的所有图标现在都已更改,除了.exe本身。