bpo-46638: Makes registry virtualisation setting stable when building MSIX packages (GH-31130)

This commit is contained in:
Steve Dower 2022-02-07 16:59:40 +00:00 committed by GitHub
parent 9c979d7afd
commit 3a5afc14e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 4 deletions

View File

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

View File

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

View File

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