Come impostare l'icona dell'app per Electron / Atom Shell App


147

Come si imposta l'icona dell'app per l'app Electron?

Ci sto provando BrowserWindow({icon:'path/to/image.png'});ma non funziona.

Devo impacchettare l'app per vedere l'effetto?



Una cosa che puoi fare per Mac è mettere uno postinstallscript nel tuo progetto che copi il file .icns in posizione sotto node_modules / automaticamente.
Ther

Risposte:


164

L'impostazione della iconproprietà durante la creazione BrowserWindowha effetto solo su Windows e Linux.

Per impostare l'icona su OS X, è possibile utilizzare elettron-packager e impostare l'icona utilizzando l' --iconinterruttore.

Dovrà essere in formato .icns per OS X. Esiste un convertitore di icone online che può creare questo file dal tuo .png.


5
L'impostazione dell'icona su BrowserWindow su un file .PNG verrà visualizzata nella barra delle applicazioni in Windows. Un esempio del suo funzionamento può essere trovato sul mio blog qui: mylifeforthecode.com/… Potrebbe essere che il percorso debba essere assoluto per funzionare mentre lo imposto su __dirname + 'path / to / icon.png'. Tuttavia, per impostare l'icona per .exe è necessario utilizzare un pacchetto di elettroni o un hacker di risorse.
Shawn Rakowski,

Puoi risolvere questa risposta per essere accurati con Windows per favore?
Ana Betts,

Grazie @ShawnRakowski, hai ragione: l'ho appena provato e la proprietà icon funziona davvero anche su Windows. Ho aggiornato la mia risposta per riflettere questo.
Alex Warren,

1
Inizialmente ha funzionato, ma poi ho inviato l'app distribuibile al mio amico e non ha funzionato! Qualche idea?
Chet

10
@Nick dovrai fare qualcosa di simile al seguenteelectron-packager . YourApplicationName --all --icon "path/to/my/icon.ico"
Mateo,

47

Di seguito è la soluzione che ho:

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

18
Vale la pena ricordare che __dirname è il percorso della cartella / src / (ovvero la cartella del file app.js / main.js).
Konstantin,

.icnsnon necessario ?
ishandutta2007,

20

Puoi farlo anche per macOS. Ok, non tramite il codice, ma con alcuni semplici passaggi:

  1. Trova il file .icns che desideri utilizzare, aprilo e copialo tramite il menu Modifica
  2. Trova electron.app, di solito in node_modules / electron / dist
  3. Apri la finestra delle informazioni
  4. Seleziona l'icona nell'angolo in alto a sinistra (bordo grigio attorno ad essa)
  5. Incolla l'icona tramite cmd + v
  6. Goditi la tua icona durante lo sviluppo :-)

inserisci qui la descrizione dell'immagine

In realtà è una cosa generale non specifica dell'elettrone. Puoi cambiare l'icona di molte app macOS come questa.


6
È fantastico, grazie per questo. Ho dovuto trascinare e rilasciare per farlo funzionare, ma comunque fantastico.
Robert Masen,


Questo sembra funzionare solo per lo sviluppo. Quando eseguo 'filato dist', il file icns viene sostituito con quello dell'elettrone predefinito.
Dave,

2
@Dave In realtà ha detto6. Enjoy your icon during *development* :-)
Mia,

Bene ragazzi ... lo so ... Ma questa correzione ha più di 2 anni ... ;-) E a proposito. dovresti essere in grado di usare questo "hack" anche su una build finale, dal momento che lo cambi semplicemente sull'app dist ... Non ci ho provato per un po '.. E chissà forse c'è un modo ufficiale, ora ... ;-)
alexrjs,

12

Pacchetto aggiornato :

"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
  }
},

Dopo l'applicazione build puoi vedere le icone. Questa soluzione non mostra le icone in modalità sviluppatore. Non imposto le icone new BrowserWindow().



1

Se vuoi aggiornare l'icona dell'app nella barra delle applicazioni, quindi Aggiorna seguendo in main.js (se usi typescript quindi main.ts)

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

__dirnamepunta alla directory principale (stessa directory package.json) dell'applicazione.


sicuro di mac?
Anil8753

0

Si noti che gli esempi per il percorso del file icona tendono ad assumere che main.js si trovi nella directory di base. Se il file non si trova nella directory di base dell'app, la specifica del percorso deve tener conto di tale fatto.

Ad esempio, se main.js si trova nella sottodirectory src / e l'icona si trova in assets / icons /, questa specifica del percorso dell'icona funzionerà:

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

0

elettrone-confezionatore


L'impostazione della proprietà icon durante la creazione BrowserWindowha effetto solo sulle piattaforme Windows e Linux. devi impacchettare i file .icns per max

Per impostare l'icona su OS X usando electron-packager, imposta l'icona usando l'interruttore --icon.

Dovrà essere in formato .icns per OS X. Esiste un convertitore di icone online che può creare questo file dal tuo .png.

elettrone-builder


Come soluzione più recente, ho trovato un'alternativa all'utilizzo di --iconswitch. Ecco cosa puoi fare.

  1. Creare una directory denominata buildnella directory del progetto e inserire .icnsl'icona nella directory come denominata icon.icns.
  2. eseguire il generatore eseguendo il comando electron-builder --dir.

Scoprirai che la tua icona dell'applicazione verrà automaticamente prelevata da quella posizione della directory e utilizzata per un'applicazione durante il packaging.

Nota : la risposta fornita è per la versione recente electron-buildere testata con electron-builder v21.2.0

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.