Как установить значок приложения для Electron / Atom Shell App


147

Как установить значок приложения для своего приложения Electron?

Я пытаюсь, BrowserWindow({icon:'path/to/image.png'});но это не работает.

Нужно ли упаковать приложение, чтобы увидеть эффект?


Вы можете подписаться на github.com/onmyway133/blog/issues/66
— onmyway133

Одна вещь, которую вы можете сделать для Mac, - это вставить postinstallскрипт в ваш проект, который автоматически скопирует файл .icns на место в node_modules /.
— Терал

Ответы:


164

Установка iconсвойства при создании BrowserWindowтолько влияет на Windows и Linux.

Чтобы установить значок в OS X, вы можете использовать электронный упаковщик и установить значок с помощью --iconпереключателя.

Он должен быть в формате .icns для OS X. Существует онлайн-конвертер иконок, который может создать этот файл из вашего .png.


5
Установка значка в BrowserWindow в файл .PNG будет отображаться на панели задач в Windows. Пример того, как это работает, можно найти в моем блоге здесь: mylifeforthecode.com/… Возможно, путь должен быть абсолютным, чтобы работать, поскольку я установил __dirname + 'path / to / icon.png'. Однако, чтобы установить значок для .exe, вам нужно будет использовать электронный пакет ИЛИ хакер ресурсов.
— Шон Раковски

Можете ли вы исправить этот ответ, чтобы быть точным относительно Windows, пожалуйста?
— Ана Беттс

Спасибо @ShawnRakowski, вы правы - я только что проверил это, и свойство icon действительно работает и в Windows. Я обновил свой ответ, чтобы отразить это.
— Алекс Уоррен

1
Сначала это сработало, но потом я отправил распространяемое приложение своему другу, и оно не сработало! Любые идеи?
— Чет

10
@ Ник, тебе нужно будет сделать что-то вроде следующегоelectron-packager . YourApplicationName --all --icon "path/to/my/icon.ico"
— Матео

47

Ниже приведено решение, которое у меня есть:

mainWindow = new BrowserWindow({width: 800, height: 600,icon: __dirname + '/Bluetooth.ico'});

18
Стоит отметить, что __dirname - это путь к вашей папке / src / (то есть папке вашего файла app.js / main.js).
— Константин

.icnsне нужно ?
— ishandutta2007

21

Вы можете сделать это и для macOS. Хорошо, не через код, но с помощью нескольких простых шагов:

  1. Найдите файл .icns, который вы хотите использовать, откройте его и скопируйте через меню «Правка».
  2. Найдите файл Electron.app, обычно в node_modules / Electron / Dist.
  3. Откройте информационное окно
  4. Выберите значок в левом верхнем углу (вокруг него серая рамка)
  5. Вставьте значок через cmd + v
  6. Наслаждайтесь своей иконкой во время разработки :-)

введите описание изображения здесь

На самом деле это общая вещь, не специфичная для электрона. Вы можете изменить значок многих приложений MacOS, как это.


6
Это удивительно, спасибо за это. Мне нужно было перетащить, чтобы заставить его работать, но тем не менее удивительно.
— Роберт Масен

Полная инструкция: support.apple.com/kb/PH25383?locale=en_US
— AndroidDev

Кажется, это работает только для развития. Когда я запускаю 'yarn dist', файл icns заменяется электронным файлом по умолчанию.
— Дэйв

2
@Dave На самом деле он сказал6. Enjoy your icon during *development* :-)
— Mia

Ну, ребята ... Я знаю ... Но это исправление более 2 лет ... ;-) И кстати. Вы должны быть в состоянии использовать этот «хак» и в финальной сборке, так как вы просто меняете его в приложении dist ... Некоторое время не пытался .. И кто знает, может быть, есть официальный способ, сейчас ... ;-)
— alexrjs

12

Обновлен package.json:

"build": {
  "appId": "com.my-website.my-app",
  "productName": "MyApp",
  "copyright": "Copyright © 2019 ${author}",
  "mac": {
    "icon": "./public/icons/mac/icon.icns",     <---------- set Mac Icons
    "category": "public.app-category.utilities"
  },
  "win": {
    "icon": "./public/icons/png/256x256.png" <---------- set Win Icon
  },
  "files": [
    "./build/**/*",
    "./dist/**/*",
    "./node_modules/**/*",
    "./public/**/*",       <---------- need for get access to icons
    "*.js"
  ],
  "directories": {
    "buildResources": "public" <---------- folder where placed icons
  }
},

После сборки приложения вы можете увидеть иконки. Это решение не отображает значки в режиме разработчика. Я не настраиваю иконки в new BrowserWindow().



1

Если вы хотите обновить значок приложения на панели задач, то обновите следующее в main.js (если используете typcript, то main.ts)

win.setIcon(path.join(__dirname, '/src/assets/logo-small.png'));

__dirnameуказывает на корневой каталог (тот же каталог, что и package.json) вашего приложения.


уверены в Mac?
— Anil8753

0

Помните, что в примерах пути к значку файла предполагается, что main.js находится в базовом каталоге. Если файл не находится в базовом каталоге приложения, указание пути должно учитывать этот факт.

Например, если файл main.js находится в подкаталоге src /, а значок - в assets / icons /, эта спецификация пути к значку будет работать:

icon: __dirname + "../assets/icons/icon.png"

0

электронно-упаковщик


Установка свойства значка при создании BrowserWindowтолько влияет на платформы Windows и Linux. Вы должны упаковать .icns для макс

Чтобы установить значок в OS X с помощью electron-packager, установите значок с помощью ключа --icon.

Он должен быть в формате .icns для OS X. Существует онлайн-конвертер иконок, который может создать этот файл из вашего .png.

электронно-строитель


В качестве самого последнего решения я нашел альтернативу использованию --iconswitch. Вот что вы можете сделать.

  1. Создайте каталог с именем buildв каталоге вашего проекта и поместите .icnsзначок в каталог с именем icon.icns.
  2. запустить строитель, выполнив команду electron-builder --dir.

Вы увидите, что значок вашего приложения будет автоматически выбран из этого каталога и использован для приложения во время упаковки.

Примечание . Данный ответ относится к последней версии electron-builderи протестирован на электронном сборщике v21.2.0.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.