如何在Electron windows app上设置OverlayIcon,以便与Squirrel.Windows一起发布

时间:2016-09-30 15:33:43

标签: electron

我已将整个源代码打包到一个.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})

enter image description here

我不明白该路径来自哪里......我希望从应用程序的资源中获取图标的路径。用于设置应用程序图标的相同内容。在这里迷失了想法......请帮助。

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>

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

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'
});