diff --git a/_msbuild.py b/_msbuild.py index 96e2e77..b8cf388 100644 --- a/_msbuild.py +++ b/_msbuild.py @@ -228,17 +228,24 @@ def get_commands(): def _make_xyzw_version(v, sep="."): + """Calculate a suitable x.y.z.w version from our user-friendly version. + + For MSIX in the Microsoft Store, the fourth field must be 0. + + For MSI, the first field must be <256. + + If the explicit version contains a non-zero field 3, it will override the + one that is calculated from prerelease markers. + """ from packaging.version import parse v = parse(v) - if not v.pre: - return "{0}{4}{1}{4}{2}{4}{3}".format(v.major, v.minor, v.micro, 0xF0, sep) - return "{0}{4}{1}{4}{2}{4}{3}".format( - v.major, - v.minor, - v.micro, - {"a": 0xA0, "b": 0xB0, "rc": 0xC0}.get(v.pre[0].lower(), 0) | v.pre[1], - sep, - ) + micro = 0xF0 + if v.pre: + micro = {"a": 0xA0, "b": 0xB0, "rc": 0xC0}.get(v.pre[0].lower(), 0) | v.pre[1] + if v.micro: + print("[WARNING]Overriding calculated version field 3 with", v) + micro = v.micro + return sep.join(map(str, (v.major, v.minor, micro, 0))) def _patch_appx_identity(source, dest, **new): diff --git a/src/pymanager/appxmanifest.xml b/src/pymanager/appxmanifest.xml index 29e7baa..f97b236 100644 --- a/src/pymanager/appxmanifest.xml +++ b/src/pymanager/appxmanifest.xml @@ -49,18 +49,6 @@ Square44x44Logo="_resources/setupx44.png" BackgroundColor="transparent" /> - - -