-
Notifications
You must be signed in to change notification settings - Fork 400
2.0 msix version spec #5986
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
2.0 msix version spec #5986
Changes from 4 commits
41317ba
f77e58f
44030c2
ca1651a
c75c85a
299ffb9
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -520,3 +520,30 @@ length constraints. The specific packages Names in Windows App SDK 1.0: | |
| * WARddlm: `Microsoft.WinAppRuntime.DDLM.<major>.<minor>.<build>.<revision>-<shortarchitecture>[-shorttag]` | ||
|
|
||
| See [2.5. Decision 5: Package Names](#25-decision-5-package-names) for more details. | ||
|
|
||
|
|
||
| ## Version Starting 2.0 | ||
| In 2.0, the family name of the MSIX package changes. The new style will be: | ||
| * WARfwk: `Microsoft.WindowsAppRuntime.<rmajor>[-tag]` | ||
| * WARmain: `MicrosoftCorporationII.WinAppRuntime.Main.<rmajor>[-shorttag]` | ||
| * WARsingleton: `MicrosoftCorporationII.WinAppRuntime.Singleton[-shorttag]` | ||
| * WARddlm: `Microsoft.WinAppRuntime.DDLM.<major>.<minor>.<Patch>.<BuildNumber>-<shortarchitecture>[-shorttag]` | ||
|
|
||
| The version will also change: | ||
| <Major>.<Minor>.<Patch>.<BuildNumber> | ||
|
||
| The exception to this version change is WARSingleton. This package is still the same family, so | ||
| the version needs to continue to increase. In this case, the Major version is Major+8000 (which forces the Major | ||
| version in the Singleton package to be higher than it was at the time of the switch). | ||
|
|
||
| The Major, Minor, and Patch will all match the Nuget versions from building the Aggregator Repo. | ||
| The BuildNumber is which build for that day. We have the following restrictions on the versions: | ||
|
||
|
|
||
| Major <= 99 | ||
| Minor <= 999 | ||
| Patch <= 9999 | ||
| BuildNumber <= 99 | ||
|
||
|
|
||
| As with the Aggregator Repo, if the Major updates, Minor resets to 0. Similarly if Minor updates, Patch | ||
| resets to 0. In the unlikely event that Minor or Patch reach these limits, then the Major (for the Minor) | ||
| or Minor (for the Patch) will bump in order to keep these restrictions. If\When we reach Major version 100, then | ||
| the Major version will be the Actual Major %100. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -153,6 +153,11 @@ where | |
| * Minor -- minor version of the release, e.g. "0" for Windows App SDK 1.0 | ||
| * VersionTag -- optional version tag to distinguish amongst channels and releases of a channel, e.g. "-preview2" for Windows App SDK 1.0 Preview 2 | ||
|
|
||
| ## Change for 2.0 | ||
|
|
||
| In 2.0 the MSIX package family changes to the format | ||
| * Name = Microsoft.WindowsAppRuntime[.SubName].\<Major\>[-VersionTag] | ||
|
||
|
|
||
| ## 3.1. Package Naming - SubName | ||
|
|
||
| The following SubName values are used: | ||
|
|
@@ -168,11 +173,11 @@ The following SubName values are used: | |
|
|
||
| The Main package follows a different naming scheme | ||
|
|
||
| * Name = MicrosoftCcorporationII.WinAppRuntime.Main.\<ReleaseMajorMinor\>[-ShortVersionTag] | ||
| * Name = MicrosoftCcorporationII.WinAppRuntime.Main.\<ReleaseMajor\>[-ShortVersionTag] | ||
|
|
||
| where | ||
|
|
||
| * ReleaseMajorMinor = project release major.minor version number. See the [MSIX Package Versioning](https://github.com/microsoft/WindowsAppSDK/blob/main/specs/deployment/MSIXPackageVersioning.md) for more details. | ||
| * ReleaseMajor = project release major version number. See the [MSIX Package Versioning](https://github.com/microsoft/WindowsAppSDK/blob/main/specs/deployment/MSIXPackageVersioning.md) for more details. | ||
| * 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). | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is a nightly or pr build called out in the tag (or in some other way) to avoid conflicting with official builds? The old versioning scheme made it easier to avoid version issues since both official and night/pr builds used the same counters with the Elapsed/Build parts of the MSIX versioning making it easier to have a newer version. If nightly/pr now run with their own 'patch' counter, how do those avoid conflicts?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-ni and -pr are the tags for nightly and pr builds.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are these written down somewhere?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the Aggregator Repo PR:
Each Repo can decide what to do for their <-label?> section, though there should be a label for non-release
builds. For the Aggregator Repo, the label would contain the following:
<pr/ni?><experimental?>
If a build was triggered for nightly or pull request, then the pr/ni would be part of the label.
If a build was triggered for experimental, then the experimental would be part of the label.
Since a Nightly build can still also be experimental, both can happen, at which point a "."
would be put between the 2, for easier reading.
I did not show this here. I can add it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
SemVer processing (and thus Nuget, and anything else SemVer-compliant) sorts "prerelease" alphabetically
This means if you have a multiple versions the sorted order (oldest to newest/latest) is
But now add -ni and it's
This is notable because things like VS using nuget does so per SemVer, so it's biased towards "latest".
and
We chose
ExperimentalandPreviewas channel names and used them in Nuget package versions in part because they respect SemVer version sorting rules.That's also why
-nightlyis weird, as saying it's newer/later/better than-experimentalbut not new/recent/good as-previewisn't always true.Think carefully about other naming for other
-prereleasetags. Ideally think about the evolutionary timeline of software/builds and pick names that fit that flow.