Skip to content

2.0 msix version spec#5986

Merged
Dreynor87 merged 15 commits intomainfrom
user/chriwall/MSIXVersionSpec
Mar 19, 2026
Merged

2.0 msix version spec#5986
Dreynor87 merged 15 commits intomainfrom
user/chriwall/MSIXVersionSpec

Conversation

@Dreynor87
Copy link
Copy Markdown
Contributor

Add information for the MSIXPackage version change for 2.0 into the spec files.

A microsoft employee must use /azp run to validate using the pipelines below.

WARNING:
Comments made by azure-pipelines bot maybe inaccurate.
Please see pipeline link to verify that the build is being ran.

For status checks on the main branch, please use TransportPackage-Foundation-PR
(https://microsoft.visualstudio.com/ProjectReunion/_build?definitionId=81063&_a=summary)
and run the build against your PR branch with the default parameters.

Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated
Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated
Comment thread specs/Deployment/MSIXPackages.md Outdated
## Change for 2.0

In 2.0, all MSIX names will change to remove the Minor version as follows:
* Name = Microsoft.WindowsAppRuntime[.SubName].\<Major\>[-VersionTag]
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

See previous comment

Copy link
Copy Markdown
Member

@DrusTheAxe DrusTheAxe left a comment

Choose a reason for hiding this comment

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

Updates needed

Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated
Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated
* WARddlm: `Microsoft.WinAppRuntime.DDLM.<major>.<minor>.<Patch>.<BuildNumber>-<shortarchitecture>[-shorttag]`

The version will also change:
<Major>.<Minor>.<Patch>.<BuildNumber>
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Given "MSIX version's 4th field (Revision) is reserved for security updates", I think we could just list this as "0".

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Only way you could list this as "0" is if the DDLM will never (and can never) need an update leveraging this.

If you engrave that in stone then Revision needs to support a non-zero value, even if rarely (hopefully never?) used.

Even if you declare "Revision can only be 1 digit (0-9) the DDLM package Name's max length is still too big with just this restriction. See the math above for more details

Comment thread specs/Deployment/MSIXPackages.md Outdated
Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated
@codendone
Copy link
Copy Markdown
Collaborator

I propose updating the title of this PR to something like:

2.0 msix version spec

@DrusTheAxe
Copy link
Copy Markdown
Member

DrusTheAxe commented Nov 20, 2025

I propose updating the title of this PR to something like:

2.0 msix version spec

Or rename the current files ...-1.x.md

Or my preference, move the existing files with their old 0.x/1.x information into a new specs\Deployment\obsolete directory and write new content here with just the 2.0+ rules.

P.S. Alternatively we could move 'obsolete' content under a new specs\obsolete\Deployment directory but I prefer keeping related content together e.g. Deployment\* and Deployment\obsolete\*. Makes it easier for the content owner to manage, (and eventually delete obsolete information).

@Dreynor87 Dreynor87 changed the title User/chriwall/msix version spec 2.0 msix version spec Nov 20, 2025
Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated
3.0.0-preview is the preview 3 public release
3.0.1-experimental (contains 3.0.1-preview + some new APIs not in the preview build)
3.0.3 is the first 3 stable release (we made 3.0.2, noticed issues we had not seen in preview, fixed and rebuilt)
3.0.4-experimental (contains 3.0.3 + the new APIs from 3.0.1-experimental)
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

The example here is good, but the markdown formatting is problematic since all lines get merged like a paragraph. I suggest starting each of these version example lines with "* " to make each line a bullet.

Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated

Since we will now match the release version with the MSIX, it is worth explaining how that is going to increment.
Every potential released build (stable, preview, experimental) will increase the Patch, unless the Major or Minor is increased.
If we notice an issue after building the canditate, we might choose not to release it, at which point the patch could bump twice.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

could bump twice

could bump twice

suggest "again" instead of "twice", since this situation could repeat multiple times before a build is selected for release.

Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated
Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated
A simplified example is this:
2.0.0 is the first stable release.
2.0.1-experimental is the first experimental. (contains 2.0.0 + some exp APIs, and some bug fixes)
2.0.2 is the 2nd stable release. (bug fixes moved into 2)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This doesn't make sense to me. 2.0.1 should be the 2nd stable release.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I'm with Morten here. The versions should be incremental in their own band. See NuGet's docs for a widely accepted and understood naming paradigm https://learn.microsoft.com/en-us/nuget/concepts/package-versioning?tabs=semver20sort#pre-release-versions

Using the 2.0 sematic versioning it should be

2.0.1-aaa
2.0.1-alpha10
2.0.1-alpha2
2.0.1-beta
2.0.1-experimental (<-- alphabetical order lets htis fit naturally here)
2.0.1-open
2.0.1-rc.2
2.0.1-rc.10
2.0.1-zzz
2.0.1

Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated
***Recommendation:***
For all 1.x, option B was selected, while waiting on tooling to be able to handle the rapid development we want.
Starting 2.x, option A is selected. This will allow for better stability for external developers. They will
know that as long as they are on the same Major, then things should be compatible.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Good. I would consider writing here then things will be compatible, instead of then things should be compatible, as it should really be the exception if something on the same Major is not compatible. Of course, if there are exceptions, someone can pin-point to this. But anyway, the "should be" sounds to me like soft target. If it's really a serious goal of making the Major the incompatibility boundary, then I would make the wording here also a bit stronger.

Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated
Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated
13 characters. Package Name is restricted to 50 characters maximum.
Windows App SDK 2.x goes back to just a "-preview" tag on the package Name.

***Shorter Tags as needed*** "-preview" adds 8 characters to package Name. "-experiental" adds
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
***Shorter Tags as needed*** "-preview" adds 8 characters to package Name. "-experiental" adds
***Shorter Tags as needed*** "-preview" adds 8 characters to package Name. "-experimental" adds

Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated
Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated
Comment thread specs/Deployment/MSIXPackages.md Outdated
Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated
Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated
Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated
***Recommendation:*** Option D with Epoch=January 1, 2021.
***Recommendation:***
For 1.x, Option D was selected.
For 2.x, Option A is selected.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Change to "Option A is selected."

Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated
* WARfwk: `Microsoft.WindowsAppRuntime.<rmajor>.<rminor>[-tag]`
* WARmain: `Microsoft.WindowsAppRuntime.Main.<rmajor>.<rminor>[-tag]`
* WARddlm: `Microsoft.WindowsAppRuntime.DDLM.<major>.<minor>.<build>.<revision>-<shortarchitecture>[-shorttag]`
* WARddlm: `Microsoft.WindowsAppRuntime.DDLM.<rmajor>.<rminor>.<build>.<revision>-<shortarchitecture>[-shorttag]`
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Should be <rpatch> given it's the same as the release (SemVer lingo, Major.Minor.Patch)

Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated
Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated

**Decision 2:** Windows App SDK version 1.* encodes `Major.Minor` into MSIX package Names.

**Decision 2.1:** Windows App SDK version 2.* encodes `Major` into MSIX package Names.
Copy link
Copy Markdown
Member

@DrusTheAxe DrusTheAxe Jan 20, 2026

Choose a reason for hiding this comment

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

Decision 1 2 2.1 - little weird

SUGGESTION: Renumber to 1 2 3 4... Or remove info <2.0 -- cut Decision 1+2 and rename Decision 2.1... to Decision 1...version >=2.0 encodes...

Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated
Comment thread specs/Deployment/MSIXPackages.md Outdated
* ShortVersionTag = short form of the VersionTag

ShortVersionTag is derived from a VersionTag by combining the 1st letter and the last digit (if any) for non-Stable channels (ShortVeresionTag is blank for the Stable channel, just like VersionTag).
ShortVersionTag is derived from a VersionTag by using the 1st letter for non-Stable channels (ShortVeresionTag is blank for the Stable channel, just like VersionTag).
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Based on the examples above, it looks like ShortVersionTag also still combines the letter with potentially a couple of digits (e00 in the example for an -experimental00) release.

Comment thread specs/Deployment/MSIXPackages.md Outdated
Comment thread specs/Deployment/WindowsAppSDKVersioning.md Outdated
Comment thread specs/Deployment/WindowsAppSDKVersioning.md Outdated
Comment thread specs/Deployment/MSIXPackageVersioning.md Outdated
Dreynor87 and others added 3 commits January 21, 2026 12:26
Co-authored-by: Mike Crider <45052236+codendone@users.noreply.github.com>
Co-authored-by: Mike Crider <45052236+codendone@users.noreply.github.com>
Co-authored-by: Mike Crider <45052236+codendone@users.noreply.github.com>
@DrusTheAxe
Copy link
Copy Markdown
Member

Is the spec review complete / signed off?

Are all comments addressed?

@Dreynor87
Copy link
Copy Markdown
Contributor Author

Dreynor87 commented Mar 18, 2026

Is the spec review complete / signed off?

Are all comments addressed?

Yes. I didnt complete this yet, partly cause I forgot, but mostly because the aggregator repo PR that describes more internals is not in yet, because that has not been approved by everyone we wanted.
And you are listed as "requesting changes"
I will double check that everything is correct tomorrow, then get it in
I did double check things, and I think they are good. @DrusTheAxe, once I get your approval, I can get this in.

@Dreynor87
Copy link
Copy Markdown
Contributor Author

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 1 pipeline(s).

@Dreynor87
Copy link
Copy Markdown
Contributor Author

/azp run

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 1 pipeline(s).

@DrusTheAxe DrusTheAxe self-requested a review March 19, 2026 22:13
@Dreynor87 Dreynor87 enabled auto-merge (squash) March 19, 2026 22:27
@Dreynor87 Dreynor87 merged commit 0038c23 into main Mar 19, 2026
49 checks passed
@Dreynor87 Dreynor87 deleted the user/chriwall/MSIXVersionSpec branch March 19, 2026 23:52
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.

9 participants