Cách đặt biểu tượng ứng dụng cho Ứng dụng Electron / Atom Shell


147

Làm thế nào để bạn thiết lập biểu tượng ứng dụng cho ứng dụng Electron của bạn?

Tôi đang cố gắng BrowserWindow({icon:'path/to/image.png'});nhưng nó không hoạt động.

Tôi có cần phải đóng gói ứng dụng để xem hiệu quả không?



Một điều bạn có thể làm cho Mac là đặt một postinstalltập lệnh trong dự án của bạn, nó sẽ sao chép tệp .icns vào vị trí dưới nút_modules / tự động.
vào

Câu trả lời:


164

Đặt thuộc icontính khi tạo BrowserWindowchỉ có tác dụng với Windows và Linux.

Để đặt biểu tượng trên OS X, bạn có thể sử dụng trình đóng gói electron và đặt biểu tượng bằng công --icontắc.

Nó sẽ cần phải ở định dạng .icns cho OS X. Có một trình chuyển đổi biểu tượng trực tuyến có thể tạo tệp này từ .png của bạn.


5
Đặt biểu tượng trên BrowserWindow thành tệp .PNG sẽ hiển thị trên thanh tác vụ trong các cửa sổ. Một ví dụ về nó hoạt động có thể được tìm thấy trên blog của tôi ở đây: mylifeforthecode.com/. Có thể đường dẫn cần phải tuyệt đối để hoạt động khi tôi đặt nó thành __dirname + 'path / to / icon.png'. Tuy nhiên, để thiết lập biểu tượng cho .exe, bạn sẽ cần sử dụng hacker tài nguyên HOẶC trình đóng gói điện tử.
Shawn Rakowski

Bạn có thể sửa câu trả lời này để trở thành Windows chính xác không?
Ana Betts

Cảm ơn @ShawnRakowski, bạn đã đúng - Tôi vừa thử nghiệm tính năng này và thuộc tính biểu tượng cũng thực sự hoạt động trên Windows. Tôi đã cập nhật câu trả lời của mình để phản ánh điều này.
Alex Warren

1
Điều này hoạt động lúc đầu, nhưng sau đó tôi đã gửi ứng dụng phân phối cho bạn tôi và nó không hoạt động! Có ý kiến ​​gì không?
Chet

10
@Nick bạn sẽ cần phải làm một cái gì đó như sauelectron-packager . YourApplicationName --all --icon "path/to/my/icon.ico"
Mateo

47

Dưới đây là giải pháp mà tôi có:

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

18
Đáng nói là __dirname là đường dẫn của thư mục / src / của bạn (tức là thư mục của tệp app.js / main.js của bạn).
Konstantin

.icnskhông cần thiết ?
ishandutta2007

20

Bạn cũng có thể làm điều đó cho macOS. Ok, không thông qua mã, nhưng với một số bước đơn giản:

  1. Tìm tệp .icns bạn muốn sử dụng, mở tệp và sao chép tệp qua menu Chỉnh sửa
  2. Tìm electron.app, thường là trong node_modules / electron / dist
  3. Mở cửa sổ thông tin
  4. Chọn biểu tượng ở góc trên cùng bên trái (viền màu xám xung quanh nó)
  5. Dán biểu tượng qua cmd + v
  6. Thưởng thức biểu tượng của bạn trong quá trình phát triển :-)

nhập mô tả hình ảnh ở đây

Trên thực tế nó là một điều chung không cụ thể đối với điện tử. Bạn có thể thay đổi biểu tượng của nhiều ứng dụng macOS như thế này.


6
Điều này thật tuyệt vời, cảm ơn bạn vì điều này. Tôi đã cần phải kéo và thả để làm cho nó hoạt động nhưng dù sao cũng tuyệt vời.
Robert Masen


Điều này dường như chỉ làm việc cho sự phát triển. Khi tôi chạy 'sợi dist', tệp icns sẽ được thay thế bằng tệp điện tử mặc định.
Dave

2
@Dave Thật ra anh nói6. Enjoy your icon during *development* :-)
Mia

Chà các bạn ... tôi biết ... Nhưng bản sửa lỗi này đã hơn 2 tuổi ... ;-) Và btw. bạn cũng có thể sử dụng "hack" này trên bản dựng cuối cùng, vì bạn chỉ cần thay đổi nó trên ứng dụng dist ... Đã không thử một lúc .. Và ai biết có thể có một cách chính thức, bây giờ ... ;-)
alexrjs

12

Đã cập nhật gói.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
  }
},

Sau khi xây dựng ứng dụng, bạn có thể thấy các biểu tượng. Giải pháp này không hiển thị biểu tượng trong chế độ nhà phát triển. Tôi không thiết lập biểu tượng trong new BrowserWindow().



1

Nếu bạn muốn cập nhật biểu tượng ứng dụng trên thanh tác vụ, thì Cập nhật theo sau trong tệp main.js (nếu sử dụng bản in rồi main.ts)

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

__dirnametrỏ đến thư mục gốc (cùng thư mục với package.json) ứng dụng của bạn.


chắc chắn về mac?
Anil8753

0

Xin lưu ý rằng các ví dụ cho đường dẫn tệp biểu tượng có xu hướng giả định rằng main.js nằm trong thư mục cơ sở. Nếu tệp không nằm trong thư mục cơ sở của ứng dụng, đặc tả đường dẫn phải tính đến thực tế đó.

Ví dụ: nếu main.js nằm dưới src / thư mục con và biểu tượng nằm dưới nội dung / biểu tượng /, đặc tả đường dẫn biểu tượng này sẽ hoạt động:

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

0

đóng gói điện tử


Đặt thuộc tính biểu tượng khi tạo BrowserWindowchỉ có tác dụng trên nền tảng Windows và Linux. bạn phải gói .icns cho tối đa

Để đặt biểu tượng trên OS X bằng cách sử dụng electron-packager, hãy đặt biểu tượng bằng công tắc --icon.

Nó sẽ cần phải ở định dạng .icns cho OS X. Có một trình chuyển đổi biểu tượng trực tuyến có thể tạo tệp này từ .png của bạn.

người xây dựng điện tử


Là một giải pháp gần đây nhất, tôi tìm thấy một sự thay thế của việc sử dụng --iconchuyển đổi. Dưới đây là những gì bạn có thể làm.

  1. Tạo một thư mục có tên buildtrong thư mục dự án của bạn và đặt .icnsbiểu tượng trong thư mục như được đặt tên icon.icns.
  2. chạy xây dựng bằng cách thực hiện lệnh electron-builder --dir.

Bạn sẽ thấy biểu tượng ứng dụng của bạn sẽ được tự động chọn từ vị trí thư mục đó và được sử dụng cho một ứng dụng trong khi đóng gói.

Lưu ý : Câu trả lời đã cho là dành cho phiên bản gần đây electron-buildervà được thử nghiệm với trình tạo electron v21.2.0

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.