# 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__..., # 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