From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Mon, 7 Feb 2022 17:37:01 +0000 (-0800) Subject: bpo-46638: Makes registry virtualisation setting stable when building MSIX packages... X-Git-Tag: v3.9.11~89 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=76b072717a160c44cb8d54be3d5e878bc31f2c38;p=thirdparty%2FPython%2Fcpython.git bpo-46638: Makes registry virtualisation setting stable when building MSIX packages (GH-31130) (cherry picked from commit 3a5afc14e16370c1f4f72d43cb553298ad9a1fa4) --- diff --git a/Misc/NEWS.d/next/Windows/2022-02-04-18-02-33.bpo-46638.mSJOSX.rst b/Misc/NEWS.d/next/Windows/2022-02-04-18-02-33.bpo-46638.mSJOSX.rst new file mode 100644 index 000000000000..536aae68f832 --- /dev/null +++ b/Misc/NEWS.d/next/Windows/2022-02-04-18-02-33.bpo-46638.mSJOSX.rst @@ -0,0 +1,4 @@ +Ensures registry virtualization is consistently disabled. For 3.10 and +earlier, it remains enabled (some registry writes are protected), while for +3.11 and later it is disabled (registry modifications affect all +applications). diff --git a/PC/layout/support/appxmanifest.py b/PC/layout/support/appxmanifest.py index 15119b02a802..427a36f31c8f 100644 --- a/PC/layout/support/appxmanifest.py +++ b/PC/layout/support/appxmanifest.py @@ -412,14 +412,22 @@ def get_appxmanifest(ns): if value: node.text = value - winver = sys.getwindowsversion()[:3] + try: + winver = tuple(int(i) for i in os.getenv("APPX_DATA_WINVER", "").split(".", maxsplit=3)) + except (TypeError, ValueError): + winver = () + + # Default "known good" version is 10.0.22000, first Windows 11 release + winver = winver or (10, 0, 22000) + if winver < (10, 0, 17763): winver = 10, 0, 17763 find_or_add(xml, "m:Dependencies/m:TargetDeviceFamily").set( - "MaxVersionTested", "{}.{}.{}.0".format(*winver) + "MaxVersionTested", "{}.{}.{}.{}".format(*(winver + (0, 0, 0, 0)[:4])) ) - if winver > (10, 0, 17763): + # Only for Python 3.11 and later. Older versions do not disable virtualization + if (VER_MAJOR, VER_MINOR) >= (3, 11) and winver > (10, 0, 17763): disable_registry_virtualization(xml) app = add_application( diff --git a/PC/layout/support/constants.py b/PC/layout/support/constants.py index 6cf0fe1d34c4..6efd8bcd5cbb 100644 --- a/PC/layout/support/constants.py +++ b/PC/layout/support/constants.py @@ -16,7 +16,7 @@ def _unpack_hexversion(): hexversion = int(os.getenv("PYTHON_HEXVERSION"), 16) except (TypeError, ValueError): hexversion = sys.hexversion - return struct.pack(">i", sys.hexversion) + return struct.pack(">i", hexversion) def _get_suffix(field4):