Skip to content

ci: numeric-only pre-release identifier for Windows MSI - #161

Merged
its-mash merged 1 commit into
mainfrom
fix/prerelease-msi-version
Jun 15, 2026
Merged

ci: numeric-only pre-release identifier for Windows MSI#161
its-mash merged 1 commit into
mainfrom
fix/prerelease-msi-version

Conversation

@its-mash

Copy link
Copy Markdown
Member

Problem

First real pre-release run (27517363876): Linux + both macOS builds succeeded, but Windows failed, so prerelease-publish was skipped and v0.4.0-pre.185 stayed a draft. The MSI bundler errored:

failed to bundle project `optional pre-release identifier in app version must be
numeric-only and cannot be greater than 65535 for msi target`

MSI maps the SemVer pre-release identifier into the version's 4th field, which must be numeric ≤ 65535 — pre.185 (the pre word) is rejected.

Fix

Use a numeric-only pre-release identifier: <base>-<run_number> (e.g. 0.4.0-185) instead of <base>-pre.<run_number>.

  • SemVer ordering is unchanged: 0.3.0 < 0.4.0-185 < 0.4.0-186 < 0.4.0.
  • Both channels keep building MSI on Windows — important, because stable's updater already targets MSI (windows-x86_64 → …_x64_en-US.msi); building NSIS-only for pre-releases would cross installer types when users toggle channels.
  • promote.yml's suffix strip generalized from -pre\. to -.* so it recovers 0.4.0 from 0.4.0-185.
  • GitHub still marks these prerelease=true, so channel classification is unaffected.

Companion

The resolver's version parser needs to accept the new format — mcpmux.serverhub.api PR (regex -(?:pre\.)?(\d+)). The broken v0.4.0-pre.185 draft will be deleted; the next merge produces 0.4.0-<run> cleanly.

run_number is 185 today and stays well under the 65535 MSI ceiling.

The Windows MSI bundler maps the SemVer pre-release identifier to the
4th version field and requires it to be numeric-only and <= 65535, so
"0.4.0-pre.185" fails to bundle ("pre" isn't numeric). Use a single
numeric identifier instead: "<base>-<run_number>" (e.g. 0.4.0-185).

SemVer ordering is preserved (0.3.0 < 0.4.0-185 < 0.4.0-186 < 0.4.0) and
both channels keep building MSI on Windows, matching the installer type
existing stable users already have. promote.yml's suffix strip is
generalized to "-.*" to recover the stable version from the new format.

Signed-off-by: Mohammod Al Amin Ashik <maa.ashik00@gmail.com>
@its-mash
its-mash merged commit 53afa2d into main Jun 15, 2026
6 checks passed
@its-mash
its-mash deleted the fix/prerelease-msi-version branch June 15, 2026 01:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant