-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathelectron-builder.yml
More file actions
106 lines (99 loc) · 4.49 KB
/
Copy pathelectron-builder.yml
File metadata and controls
106 lines (99 loc) · 4.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
appId: com.beacon.app
productName: Beacon
artifactName: ${productName}-${version}-${os}-${arch}.${ext}
files:
- 'out/**/*'
- 'package.json'
npmRebuild: false
# Bundled connect backend (see src/main/index.ts's startConnectServer()) —
# built by `npm run package:connect` (connect/packaging/build-binary.py),
# which must run before electron-builder does. Like any PyInstaller output,
# this is platform/arch-specific — it has to be built *on* whatever
# platform/arch you're packaging for, no cross-compiling.
extraResources:
- from: connect/dist/connect-server
to: connect-server
filter:
- '**/*'
# build/icon.png (1024x1024, the mdi-lighthouse-on glyph rendered straight
# from @mdi/font's own TTF in the app's primary theme color — same source
# as the DefaultLayout.vue/MobileLayout.vue app-bar icon and the web
# favicon, just at full resolution instead of downscaled) is the source
# every icon here is generated from: build/icons/icon.ico is a real
# multi-resolution ICO (16 through 256px), and build/icons/NxN.png are the
# freedesktop sizes Linux needs.
#
# Linux points at the *directory*, not at icon.png, and that distinction is
# the whole reason a packaged Linux build shows an icon at all. Handed a
# single .png, electron-builder ships exactly that one file at exactly its
# own resolution (see app-builder-lib's iconConverter: "source is already a
# .png — return as-is with its dimensions"), which put the only copy in
# hicolor/1024x1024/. No spec-conforming icon lookup ever finds it: the
# freedesktop hicolor theme declares sizes up to 512x512 and nothing
# beyond, so a directory it doesn't know about is skipped entirely, and
# every launcher fell back to a generic icon. Handed a directory, the same
# converter collects every NxN.png in it — icon.ico is ignored, its name
# doesn't match — and each one lands in the hicolor size it belongs to.
win:
icon: build/icons/icon.ico
target:
- target: nsis
arch:
- x64
- arm64
nsis:
allowToChangeInstallationDirectory: true
oneClick: false
shortcutName: ${productName}
uninstallDisplayName: ${productName}
createDesktopShortcut: always
mac:
icon: build/icon.png
target:
# arm64 only: the bundled Connect backend binary is built by PyInstaller
# on the (Apple Silicon) CI runner and cannot cross-compile to x64.
- target: dmg
arch:
- arm64
- target: zip
arch:
- arm64
category: public.app-category.music
# Unsigned/local builds — no Apple Developer ID configured. Set `identity`
# to a real signing identity (and drop hardenedRuntime/notarize) once one
# exists; without that, macOS Gatekeeper will warn on install.
identity: null
hardenedRuntime: false
# Required on macOS 14+ (Sonoma) for the local-network-access permission
# prompt to work at all — without it, macOS can't show a proper prompt
# for what this app actually needs local network for, and discovery can
# silently fail. Beacon genuinely needs this for both casting (mDNS/SSDP
# discovery of Sonos/Chromecast/DLNA/AirPlay targets) and Remote Control
# (LAN-pairing a phone against this desktop instance).
extendInfo:
NSLocalNetworkUsageDescription: 'Local network access is required to discover casting devices (Sonos, Chromecast, DLNA, AirPlay) and to pair Remote Control with your phone.'
linux:
# A directory, deliberately — see the icon comment above.
icon: build/icons
target:
- AppImage
- deb
- tar.xz
category: AudioVideo;Audio;Player
artifactName: ${productName}-${os}-${arch}.${ext}
# Without this, desktop environments can't reliably associate a running
# window with this .desktop entry (taskbar grouping/icon pinning) — the
# runtime WM_CLASS wouldn't match the shipped .desktop file's name
# (package.json's own top-level `desktopName`, not a linux.* option —
# see https://www.electron.build/linux#window-association-desktopname--syncdesktopname).
# This makes Electron itself report that exact name at runtime instead
# of falling back to a generic/mismatched one.
syncDesktopName: true
# Auto-updates (see src/main/index.ts's checkForUpdates()) target this
# repo's own GitHub releases — electron-updater reads this at runtime via
# the app-update.yml electron-builder bakes into the packaged app.
publish:
provider: github
owner: mihaitom
repo: beacon
channel: latest