Ошибка сборки Electron JS Mac OS X с иконкой в ​​трее в формате .png - PullRequest
0 голосов
/ 22 октября 2019

Для начала, моя сборка для "нормального" (не в трее) приложения отлично работает с электронным упаковщиком, и эта команда

npx electron-packager . --overwrite --plaorm=darwin --arch=x64 --icon=aicons/1024.icns --prune=true --out=release-builds

Недавно я повторно пересмотрел свой код, так что теперь это приложение в трее

, поэтому у меня есть

  tray = new Tray('icons/elektro.png')
  tray.setToolTip('elektro')

Это прекрасно работает с запуском npm, но когда я собираю .app с помощью electronic-packager, я получаю эту ошибку:

Uncaught Exception:
TypeError: Error processing argument at index 0, conversion failure from icons/elektro.png
    at App.<anonymous> (/Users/gurugeek/elektro/release-builds/elektro-darwin-x64/elektro.app/Contents/Resources/app/main.js:48:10)
    at App.emit (events.js:205:15)

Iпредположим, что проблема связана с .png, используемым для иконки в трее. Если я изменю его на формат .icns, он больше не будет работать при запуске npm. Есть идеи, как это исправить?

Я использую электрон 6

1 Ответ

0 голосов
/ 22 октября 2019

Хорошо, проблема связана с путем. Это кажется тривиальным, но .app файл просто умирает без каких-либо ошибок в большинстве случаев. Эта проблема везде плохо документирована, поэтому я оставляю ее здесь для тех, кто найдет ту же проблему:

  const path = require('path');
  var iconPath = path.join(__dirname, '/icons/elektro.png') // your png tray icon
  let trayIcon = nativeImage.createFromPath(iconPath);
  // if needed resize to 16x16 but mac also accepted the 24 icon
  // trayIcon = trayIcon.resize({
  //    width: 16,
  //    height: 16
  //  });

  tray = new Tray(trayIcon)
...