aboutsummaryrefslogtreecommitdiffstats
path: root/packaging/win/electron-builder.msix.yml
blob: 577e0398bd0cfdc42995f08306d50d7a1e51b60a (plain) (blame)
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
107
108
# Standalone electron-builder config for the "MSIX" Windows target: the
# bundled node + ffmpeg, packaged for Microsoft Store submission instead of
# NSIS.
#
# What the NSIS build does with scripts -- firewall rules, a Startup-folder
# launcher, a boot task, a PATH entry -- this package DECLARES in its manifest,
# and Windows creates it at install, carries it across updates and removes it
# with the package, all without an administrator prompt. Scripts could not do
# that job here: everything they write names the install folder, and a Store
# install lives in C:\Program Files\WindowsApps\MeshBay.MeshBay_<version>_...,
# which each update deletes. Measured on a real install (2026-10-08):
#   - firewall: build/appx-manifest.xml declares the node's rules;
#   - at sign-in: build/appx-extensions.xml declares a startup task, off by
#     default, that the node's CLI switches (`meshbay-node autostart`),
#     for the app's Node page and a terminal alike;
#   - `meshbay-node` in a terminal: an execution alias, also in that file;
#   - at boot, before anyone signs in: not offered. It needs a boot task,
#     created elevated and left behind on uninstall; that is the .exe
#     installer's job.
#
# Deliberately NOT layered onto package.json's `build` field, same reasoning
# as electron-builder.light.yml: --config reads ONLY this file, so nothing
# here can accidentally inherit or merge with Full's `nsis`/signing config.
#
# electron-builder's target key for this is `appx`, not `msix` -- this
# version (app-builder-lib's AppxTarget.js, checked against the installed
# ^26.15.3) has no separate `msix` target. It still produces a package
# Partner Center's MSIX upload flow accepts; the mismatch is a naming
# artifact of the tool, not a statement about which container format comes
# out. Re-check this against whatever version is installed if it is ever
# bumped -- do not assume the target name from memory.
#
# No CSC (code-signing cert) is configured for this target, and that is
# correct, not an oversight: per app-builder-lib's own
# windowsSignToolManager.js (computePublisherName), an AppX target built
# with no certificate configured is logged as "Windows Store only build" and
# left unsigned, with `publisher` written into the manifest as-is. Microsoft
# signs the package itself at publish time -- signing it here first would be
# pointless work, not extra safety.

appId: org.meshbay.client
productName: MeshBay

directories:
  # Full's own build lives in dist/, Light's in dist-light/ -- a third,
  # separate output dir so no two targets ever race on or clobber each
  # other's files.
  output: dist-msix

files:
  - src/**
  - ui/**

win:
  target: appx
  icon: build/icon.ico
  artifactName: "MeshBay-${version}.${ext}"
  extraResources:
    # The node runtime as Full ships it, both executables: meshbay-node.exe
    # (CLI, and what the app starts) and meshbay-nodew.exe (no console, for
    # the startup task). No scripts: firewall.ps1, the service scripts and
    # ensure-node-path.ps1 are the manifest's job here (see the top of this
    # file), and main.js offers no service mode without service-mode.ps1.
    - from: node-runtime
      to: node-runtime
      filter:
        - "**/*"
    # The application's own licence, beside the app (Electron's LICENSE and
    # LICENSES.chromium.html are put next to the exe by electron-builder).
    - from: ../../LICENSE
      to: LICENSE.txt

appx:
  # --- Real values, from Partner Center's "App identity" page (App
  # management -> App identity), not chosen freely -- a mismatch here fails
  # Store validation outright rather than warning. publisherDisplayName is
  # "MeshBay" as Partner Center assigned it, NOT package.json's own author
  # company name ("MeshBay Team") -- AppXOptions.d.ts's default (company
  # name from app metadata) would silently pick the wrong one if this were
  # left unset, so it must stay explicit even though it looks redundant
  # next to `displayName`.
  identityName: MeshBay.MeshBay
  publisher: "CN=CE32BB0D-6B7C-4D3A-AA42-E259B778CAC9"
  publisherDisplayName: MeshBay
  applicationId: MeshBay
  displayName: MeshBay
  languages:
    - en-US
    - fr-FR
    - es-ES
    - pt-BR
    - zh-CN
    - ja-JP
    - de-DE
    - it-IT
    - nl-NL
    - pl-PL
  # Execution aliases need Windows 10 1709; 1809 is the oldest still
  # serviced. electron-builder's default (10.0.14316.0, for both) predates both.
  minVersion: 10.0.17763.0
  maxVersionTested: 10.0.26100.0
  # The stock template plus the package-level firewall rules.
  customManifestPath: build/appx-manifest.xml
  # The startup task and the execution alias. Not addAutoLaunchExtension:
  # that one always starts the package's main executable, the Electron shell,
  # where "at sign-in" means the node.
  customExtensionsPath: build/appx-extensions.xml
  showNameOnTiles: false