如何在 Electron windows 应用程序构建上设置 OverlayIcon 以便使用 Squirrel.Windows 发布

How to set OverlayIcon on Electron windows app build for release with Squirrel.Windows

我已将所有源代码打包到一个 .exe 文件夹中。该应用程序的图标已设置,但我的问题是它无法识别(在我的情况下是相同的图标)设置覆盖。 从 package.js 中提取的代码进行构建:

"pack": "build --dir",
"dist": "build --win --ia32"


 "build": {     
      "icon": "icon.ico"
  }

并且在 index.html 中,当我收到一个事件并需要覆盖图标时,它会退出并抛出错误。我为应用程序设置的图标相同。

mainWindow = new BrowserWindow({width: 1200, height: 800, icon: `icon.ico`, title: title})

我不明白那条路径是从哪里来的...我希望是来自应用程序资源的图标路径。用于设置应用程序图标的同一个。在这里失去了想法......请帮忙。

相关部分来自index.html

<script type="text/javascript">

    const remoteElectron = require('electron').remote;
    const BrowserWindow = remoteElectron.BrowserWindow;
    const electron = require("electron");

    var win = remoteElectron.getCurrentWindow();

    var eventNewmsg = window.document.createEvent('Event');
    eventNewmsg.initEvent('okmsg', false, false);
    window.document.addEventListener("okmsg", function(){
        win.setOverlayIcon(`icon.ico`, "");
    }, false);

    window.eventNewMsg = eventNewmsg;
    var eventNomsg = window.document.createEvent('Event');
    eventNomsg.initEvent('cancelmsg', false, false);
    window.document.addEventListener("cancelmsg", function(){
        win.setOverlayIcon(null, "")
    }, false);
    window.eventNoMsg = eventNomsg;
</script>

嗯,我用不同的方式设置了图标,对我来说效果很好。

我会告诉你我是如何设置的。适用于所有地方。

mainWindow = new BrowserWindow({
    transparent: false,
    frame: false,
    fullscreen: false,
    width: 800,
    height: 400,
    resizable: false,
    movable: false,
    show: false,
    icon: __dirname + '/styles/images/app.png'
});

指定路径时最好明确,因此如果您的图标与 index.html 在同一目录中,您应该执行以下操作:

const path = require('path');
win.setOverlayIcon(path.join(__dirname, 'icon.ico', ''));