是否可以动态更改电子图标和可见的应用程序名称?

Is it possible to change the electron icon and visible application name dynamically?

我有一个 macOS 应用程序,目前使用 2 个独立的电子构建实例来实现 2 个不同的“视图”。除了不同的图标、不同的名称和指向不同的 URL 之外,Electron 应用程序之间的代码几乎相同。

我是否可以只构建 1 个电子应用程序并动态更改图标和可见的(对用户)应用程序名称,以便减少安装足迹?

我只需要支持macOS即可。

编辑:(使其更清楚)

我有一个基本上使用电子作为 2 个门户网站的 webview 组件的应用程序。

因此,当我部署时,我有 1 个电子“app”运行 作为“FOO”,带有 Foo 图标,1 个电子“app”运行 作为“BAR”,带有 Bar 图标。

但我在幕后所做的只是将 Foo 和 Bar 指向特定的 URL。

我只需要它让用户看起来像是两个带有不同图标的独立应用程序。

您可以在初始化 BrowserWindow 时同时设置图标和标题。使用与指向 Foo 或 Bar 相同的逻辑并相应地设置 icontitle

查看文档 - https://www.electronjs.org/docs/api/browser-window#new-browserwindowoptions

关于图标:

您可以使用 JavaScript: dock.setIcon(image) 在 macOS 上更改 Electron application/dock 图标。例如:

const nativeImage = require('electron').nativeImage
const image = nativeImage.createFromPath('icon.png')
app.dock.setIcon(image);

使用单个 Electron 应用程序,您可以打开该应用程序的 2 个实例 (open -n -a "APPLICATION NAME") 并根据视图更改图标。

您可以在 macOS 上使用扩展坞做更多有趣的事情,例如 setBadge()。参见 https://github.com/electron/electron/blob/main/docs/api/dock.md


关于应用名称:

我没有找到直接执行此操作的方法。但是,您可以发挥创意,将上述方法与两个非常精简的 'parent' 应用程序结合起来,这两个应用程序可以在您的 main.js

中使用 app.setActivationPolicy('accessory') 以隐藏方式启动您的 Electron 应用程序

https://github.com/electron/electron/blob/main/docs/api/app.md