Skip to content

feat(windows): add optional MSIX installer alongside Squirrel/WiX - #1886

Open
aequivalent2 wants to merge 1 commit into
nextcloud:mainfrom
aequivalent2:feat/windows-msix-installer
Open

aequivalent2 wants to merge 1 commit into
nextcloud:mainfrom
aequivalent2:feat/windows-msix-installer

Conversation

@aequivalent2

Copy link
Copy Markdown
Contributor

Exclude MakerWix for arm64 builds: @electron-forge/maker-wix@8.0.0-alpha.10 hardcodes an arch whitelist (x64/ia64/x86) and throws Invalid arch for arm64 before electron-wix-msi is ever reached, so the maker must be skipped entirely rather than just passing arm64 through.

Add @electron-forge/maker-msix as an additional, optional installer (new BUILD_CONFIG.windowsMsix flag), alongside the existing Squirrel/WiX makers - not replacing them yet, per the phased plan in #1519. Unlike MakerWix, targetArch is threaded through by Forge itself and converted via toMsixArch(), which supports arm64 out of the box.

You need to switch the Icon Assets, because that is your branding
Also there is a need of signing these MSIX Packages

Assisted-by: Claude:claude-sonnet-5

Exclude MakerWix for arm64 builds: @electron-forge/maker-wix@8.0.0-alpha.10
hardcodes an arch whitelist (x64/ia64/x86) and throws Invalid arch for
arm64 before electron-wix-msi is ever reached, so the maker must be
skipped entirely rather than just passing arm64 through.

Add @electron-forge/maker-msix as an additional, optional installer
(new BUILD_CONFIG.windowsMsix flag), alongside the existing
Squirrel/WiX makers - not replacing them yet, per the phased plan in
nextcloud#1519. Unlike MakerWix, targetArch is threaded through by Forge itself
and converted via toMsixArch(), which supports arm64 out of the box.

Assisted-by: Claude:claude-sonnet-5
Signed-off-by: Leonhard Ruckert <leonhard.ruckert@outlook.com>
Copilot AI lite review requested due to automatic review settings September 3, 2026 08:38

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warning

Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.

Pull request overview

Adds an optional MSIX installer option for Windows builds in Electron Forge, and avoids MakerWix failures on arm64 by skipping the WiX maker for that architecture.

Changes:

  • Add @electron-forge/maker-msix and new windowsMsix build flag to enable MSIX output.
  • Add MSIX packaging scripts for Windows arm64/x64.
  • Skip MakerWix entirely for arm64 to avoid Forge failing early on an upstream arch whitelist.

Reviewed changes

Copilot reviewed 4 out of 14 changed files in this pull request and generated 5 comments.

File Description
package.json Adds MSIX maker dependency and MSIX build scripts for Windows.
forge.config.js Adds MakerMSIX configuration and excludes MakerWix on arm64.
build/build.config.json Introduces windowsMsix flag (currently enabled).
build/BuildConfig.types.ts Documents/defines the new windowsMsix config option.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread forge.config.js
// Reverse-DNS style, no spaces - unlike applicationName (the default fallback),
// which contains a space and is not a valid MSIX package identity.
packageIdentity: BUILD_CONFIG.winAppId,
publisher: BUILD_CONFIG.companyName,
Comment thread build/build.config.json
"backgroundColor": "#00679e",
"windowsExe": true,
"windowsMsi": true,
"windowsMsix": true,
Comment thread forge.config.js
BUILD_CONFIG.windowsMsix && new MakerMSIX({
// Custom tile/logo assets, see: node_modules/electron-windows-msix/static/assets
// for the required filenames and sizes. Falls back to generic default assets if omitted.
packageAssets: path.join(__dirname, 'img/icons/msix'),
Comment thread forge.config.js
// test build, but the resulting package will not install/sideload cleanly on another
// machine without that dev cert being trusted. Real distribution needs a proper
// certificate whose Subject matches `manifestVariables.publisher` above.
windowsSignOptions: hasWindowsSign && signWithParamsToWindowsSignOptions(process.env.WINDOWS_SIGN_PARAMS),
Comment on lines +107 to +109
* experimental upstream). Intended to eventually replace windowsExe/windowsMsi,
* see https://github.com/nextcloud/talk-desktop/issues/1519
* Default: true
@github-actions

Copy link
Copy Markdown
Contributor

Hello there,
Thank you so much for taking the time and effort to create a pull request to our Nextcloud project.

We hope that the review process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR review process.

Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6

Thank you for contributing to Nextcloud and we hope to hear from you soon!

(If you believe you should not receive this message, you can add yourself to the blocklist.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants