Browse Source
bpo-46638: Makes registry virtualisation setting stable when building MSIX packages (GH-31130)
(cherry picked from commit 3a5afc14e1)
Co-authored-by: Steve Dower <steve.dower@python.org>
pull/31207/head
Miss Islington (bot)
4 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
16 additions and
4 deletions
-
Misc/NEWS.d/next/Windows/2022-02-04-18-02-33.bpo-46638.mSJOSX.rst
-
PC/layout/support/appxmanifest.py
-
PC/layout/support/constants.py
|
|
|
@ -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). |
|
|
|
@ -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( |
|
|
|
|
|
|
|
@ -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): |
|
|
|
|