Electron Linux:.AppImage 不显示图标,而 .deb

问题描述 投票:0回答:2

我有一个 Electron 应用程序,我想将其分发到所有操作系统。

我的 Linux 发行版文件有问题。我已经测试了

.deb
文件和
.AppImage
文件。

问题是图标:如果我使用

.deb
文件在 Ubuntu 上运行我的应用程序,它会正确显示图标,但当我使用
.AppImage
时,它不会。

此外,当我在开发模式下运行它以及针对 Windows 和 macOS 发布时,该图标工作正常。

为什么会这样?

我的应用程序的源代码可以在这里

linux electron electron-builder electron-packager appimage
2个回答
3
投票

AppImage 有图标错误。您需要在主窗口中设置它。

  const options = {
    backgroundColor: '#fff',
    width: 1200,
    height: 800,
    webPreferences: {
      nativeWindowOpen: true,
      nodeIntegration: true
    }
  }

  if (process.platform === "linux") {
    options.icon = path.join(`${__dirname}/icon/icon.png`);
  }

  mainWindow = new BrowserWindow(options);

0
投票

我最近遇到了这个(我正在使用电子构建器)。这是使它最终起作用的方法(对我来说 Ubuntu 24.04)。

简化的main.js

[...]    
let dirName = __dirname
if (app.isPackaged) dirName = path.join(process.resourcesPath)

if (process.platform === "win32") {
  iconPath = path.join(dirName, "build", "icons", "win", "icon.ico")
} else if (process.platform === "linux") {
  iconPath = path.join(dirName, "build", "icons", "png", "256x256.png")
} else if (process.platform === "darwin") {
  iconPath = path.join(dirName, "build", "icons", "mac", "icon.icns")
}




const mainWindow = new BrowserWindow({
          width: 1024,
          height: 768,
          title: `Your app title`,
          icon: iconPath,
          webPreferences: {
            nodeIntegration: true,
            // contextIsolation: false,
            // preload: path.join(__dirname, "preload.js"),
          },
        })

简化的package.json

{
  ...

  "main": "main.js",
  "scripts": {
  },
  "build": {
    ...

    "directories": {
      "buildResources": "build",
      "output": "dist"
    },
    "extraResources": [
      {
        "from": "./db/",
        "to": "db/",
        "filter": [
          "**/*.*"
        ]
      }
    ],
    "files": [
      "build/**/*",
      ...
     
    ],
   
    "linux": {
      "target": [
        "AppImage",
        "deb"
      ],
      "category": "Education"
    }
  }
  ...
}

简化的项目结构

.
├── main.js
├── build
│   └── icons
│       ├── icon.png
│       ├── mac
│       │   └── icon.icns
│       ├── png
│       │   ├── 1024x1024.png
│       │   ├── 128x128.png
│       │   ├── 16x16.png
│       │   ├── 24x24.png
│       │   ├── 256x256.png
│       │   ├── 32x32.png
│       │   ├── 48x48.png
│       │   ├── 512x512.png
│       │   └── 64x64.png
│       ├── README.md
│       └── win
│           └── icon.ico
├── package.json
├── package-lock.json
© www.soinside.com 2019 - 2024. All rights reserved.