如何更改 ElectronJS 应用程序默认图标?

The*_*rIV 7 electron electron-builder electron-packager angular

我是electronjs的新手。我想将 angular 应用程序转换为桌面。我可以成功实现它,但问题是应用程序图标设置为默认电子而不是我提供的图标,如下所示:

   win = new BrowserWindow({
    width: 600,
    height: 670,
    icon: `${__dirname}/dist/assets/imgs/logo.png`
  })
Run Code Online (Sandbox Code Playgroud)

我在使用资源黑客构建应用程序后更改了图标,但我需要的是在构建时以正确的方式更改它。我错过了什么>

小智 7

在 main.js 中,指定图标

win = new BrowserWindow({
 width: 800, 
 height: 600,
 icon: __dirname + '/Icon/Icon.icns'
})
Run Code Online (Sandbox Code Playgroud)

您还可以使用辅助 url 方法

const path = require('path')
const url = require('url')
const iconUrl = url.format({
 pathname: path.join(__dirname, 'Icon/Icon.icns'),
 protocol: 'file:',
 slashes: true
})
Run Code Online (Sandbox Code Playgroud)

检查此以供参考:https : //medium.com/fantageek/changed-electron-app-icon-acf26906c5ad


Abe*_*ejo 7

我知道我回答这个问题已经迟到了,但我还是会继续。我通过艰难的方式了解到了有关应用程序图标的这些事情。我认为通过比较开发和分发阶段可以更好地理解这个主题。

开发阶段

这与通过 运行应用程序是同义的npm start。在此阶段,无论您添加什么代码,您都无法替换Electron 的默认图标。

唯一可能的是将重叠图标放在默认图标之上。但是,它可能不是您正在寻找的解决方案,因为它不是图标替换而只是覆盖。这是关于图标叠加的记录。

OP的上面的代码实际上是所谓的图标覆盖的一个例子。

win = new BrowserWindow({
    width: 600,
    height: 670,
    icon: `${__dirname}/dist/assets/imgs/logo.png`
})
Run Code Online (Sandbox Code Playgroud)

此外,还可以使用图标覆盖来替换通知图标。

分配阶段

这与使用以下任一分发框架同义:

  • 电子锻造
  • 电子制造商
  • 电子包装机

为您的应用程序创建可执行文件 ( .app/ .exe)。正是在这个阶段,您可以实际替换Electron 的默认图标。

例如,在 electro-packager 中,您可以指定在打包过程中要使用的图标,如下所示:

cd /path/to/app

# Mac (.icns)
npx electron-packager ./ --platform=darwin --icon=/path/to/your-custom-icon.icns

# Windows (.ico)
npx electron-packager ./ --platform=win32 --arch=x64 --icon=/path/to/your-custom-icon.ico
Run Code Online (Sandbox Code Playgroud)

使用电子锻造器或电子构建器进行此操作将采用不同的方法。我还没试过。

重点是......只有当你的应用程序已经打包时,你才能真正替换 Electron 的默认图标。


Cli*_*ton 5

在主进程中,您必须指定图标路径。在 Windows 中图标必须是 .ico 或在 mac 中是 .icns

const path = require('path')

      mainWindow = new BrowserWindow({
        width: 900,
        height: 700,
        icon: path.join(__dirname, './img/icon.ico');
        }
      })
Run Code Online (Sandbox Code Playgroud)