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
parent
commit
9c45390208
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      Misc/NEWS.d/next/Windows/2022-02-04-18-02-33.bpo-46638.mSJOSX.rst
  2. 14
      PC/layout/support/appxmanifest.py
  3. 2
      PC/layout/support/constants.py

4
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).

14
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(

2
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):

Loading…
Cancel
Save