如何更改 ElectronJS App 默认图标?

How to Change ElectronJS App default Icon?

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

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

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

在main.js中指定图标

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

您还可以使用辅助 url 方法

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

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

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

const path = require('path')

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

您可以根据您启动的平台更改图标。

const iconPath = process.platform !== 'darwin'
    ? 'src/assets/icons/favicon.ico'
    : 'src/assets/icons/favicon.icns';

  // Create the browser window.
  win = new BrowserWindow({
    icon: path.join(__dirname, iconPath),
    x: 0,
    y: 0,
    width: size.width,
    height: size.height,
    webPreferences: {
      nodeIntegration: true,
      allowRunningInsecureContent: (serve) ? true : false,
      contextIsolation: false,  // false if you want to run e2e test with Spectron
      enableRemoteModule: true // true if you want to run e2e test  with Spectron or use remote module in renderer context (ie. Angular)
    },
  });

你可以做的是在这里插入一行代码:

WIN = new BrowserWindow = ({
    // ...
    icon: __dirname + '/relative/path/to/your/icon/file'
   // ...
});

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

发展阶段

这是 npm start 的 运行 应用程序的同义词。 在这个阶段你永远无法替换 Electron 的默认图标 -- 无论你添加什么代码。

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

的记录

OP的上述代码实际上是所谓的图标叠加的一个例子。

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

此外,图标叠加层也可用于替换 notification 图标。

分发阶段

这等同于使用以下任一分发框架:

  • electron-forge
  • electron-builder
  • electron-packager

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

以electron-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

用electron-forge或electron-builder做是不同的方法。我还没试过。

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