Electron应用程序不显示app.ico,而是显示Electron的默认值

ewm0tg9j  于 2023-11-15  发布在  Electron
关注(0)|答案(2)|浏览(322)

我试图使一个软件包出我的电子项目,我有一个问题,与图标已经安装的应用程序。
setup应用程序或安装程序的图标显示正常,但当我安装应用程序时,唯一正确显示的图标是窗口标题栏上的图标(我使用的是Windows 11),而不是任务栏上的图标。
我在GitHub和网站上读过很多文章、问题和建议解决方案的网站,但没有一个对我有用。
当我在开发过程中测试项目时,图标显示正确(npm run start)。
以下是我的forge.config.js

module.exports = {
  packagerConfig: {
    icon: "./electron_base/icon"
  },
  rebuildConfig: {},
  makers: [
    {
      name: '@electron-forge/maker-squirrel',
      config: {
        "name": "Electronify",
        "setupIcon": "./electron_base/icon.ico"
      }
    },
    {
      name: '@electron-forge/maker-deb',
        config: {
          options: {
          icon: './electron_base/icon.png'
        }
      },
    },
    {
      name: '@electron-forge/maker-dmg',
      config: {
        icon: './electron_base/icon.icns'
      }
    },
    {
      name: '@electron-forge/maker-zip',
      platforms: ['darwin', 'linux', 'win32'],
    },
  ],
};

字符串
下面是我在主Electron进程上的BrowserWindow示例:

const win = new BrowserWindow({
        width: 1280,
        height: 800,
        fullscreen: false,
        webPreferences: {
            preload: path.join(__dirname, 'preload.js')
        },
        titleBarOverlay: true,
        icon: path.join(__dirname, "icon.ico"),
    })


注意事项:存储图标的路径是一个名为electron_base的文件夹,正好在项目根目录中,我还存储了主电子进程和ContextBridge(这种结构不是我最喜欢的,但我迫切地想找到一个解决方案)。

inn6fuwd

inn6fuwd1#

在开发模式下,__dirname工作。在生产环境中,请使用process.resourcesPath
所以看起来

const resourcePath =
  !process.env.NODE_ENV || process.env.NODE_ENV === "production"
    ? process.resourcesPath // Live Mode
    : __dirname; // Dev Mode

const pathToX = path.join(resourcePath, 'x');

字符串

ac1kyiln

ac1kyiln2#

我有同样的问题.这似乎是一个更新问题.如果你完全卸载你的应用程序,你试图安装它,图标将正常工作.如果你试图安装而不卸载以前的版本,图标将无法工作.
临时解决方案:重新安装

相关问题