Windows Installer: InstallAllUsers=1 InstallLauncherAllUsers=1 still registers bundle under HKCU
Summary
On Windows x64, running the CPython 3.14 installer in quiet mode with:
InstallAllUsers=1 InstallLauncherAllUsers=1 /quiet
installs Python into C:\Program Files\Python314 and installs py.exe into C:\Windows\py.exe (after removing prior per-user launcher state), but the bundle registration still ends up under HKCU (BundleProviderKey=CPython-3.14) instead of HKLM.
This appears to be a Burn bundle scope/registration issue.
Environment
- OS: Windows (x64)
- Version under test: CPython 3.14.3 amd64 installer
- Compared installers:
- Official/original:
C:\TEMP\python-3.14.3-amd64.exe
Repro
- Ensure Python 3.14 is uninstalled.
- Remove residual paths:
C:\Program Files\Python314
%LOCALAPPDATA%\Programs\Python\Python314
%LOCALAPPDATA%\Programs\Python\Launcher
- Run installer elevated:
python-3.14.3-amd64.exe InstallAllUsers=1 InstallLauncherAllUsers=1 /quiet /log <bundle.log>
- Check:
- Uninstall registration in HKCU vs HKLM
- Launcher location (
C:\Windows\py.exe vs user launcher path)
Actual Behavior (latest run)
C:\Program Files\Python314\python.exe: present
C:\Windows\py.exe: present
%LOCALAPPDATA%\Programs\Python\Launcher\py.exe: absent
- HKCU uninstall entry for
CPython-3.14: present
- HKLM uninstall entry for
CPython-3.14: absent
Expected Behavior
With InstallAllUsers=1 InstallLauncherAllUsers=1 (and elevated install), bundle registration should be machine-wide (HKLM), not per-user (HKCU).
Key Log Evidence
Installation logfiles include lines showing package scope mismatch against bundle scope:
Skipping cross-scope dependency registration ... bundle scope: PerUser, package scope: PerMachine
But both runs also apply launcher_AllUsers successfully in the latest comparison:
Applying execute package: launcher_AllUsers ... ALLUSERS="1" ...
Requested guidance
- Is HKCU bundle registration currently expected for this installer path even with
InstallAllUsers=1 InstallLauncherAllUsers=1?
- If not expected, what is the intended Burn authoring mechanism to ensure HKLM bundle registration for all-users installs in this WiX 3.14 setup?
Windows Installer:
InstallAllUsers=1 InstallLauncherAllUsers=1still registers bundle under HKCUSummary
On Windows x64, running the CPython 3.14 installer in quiet mode with:
InstallAllUsers=1 InstallLauncherAllUsers=1 /quietinstalls Python into
C:\Program Files\Python314and installspy.exeintoC:\Windows\py.exe(after removing prior per-user launcher state), but the bundle registration still ends up under HKCU (BundleProviderKey=CPython-3.14) instead of HKLM.This appears to be a Burn bundle scope/registration issue.
Environment
C:\TEMP\python-3.14.3-amd64.exeRepro
C:\Program Files\Python314%LOCALAPPDATA%\Programs\Python\Python314%LOCALAPPDATA%\Programs\Python\Launcherpython-3.14.3-amd64.exe InstallAllUsers=1 InstallLauncherAllUsers=1 /quiet /log <bundle.log>C:\Windows\py.exevs user launcher path)Actual Behavior (latest run)
C:\Program Files\Python314\python.exe: presentC:\Windows\py.exe: present%LOCALAPPDATA%\Programs\Python\Launcher\py.exe: absentCPython-3.14: presentCPython-3.14: absentExpected Behavior
With
InstallAllUsers=1 InstallLauncherAllUsers=1(and elevated install), bundle registration should be machine-wide (HKLM), not per-user (HKCU).Key Log Evidence
Installation logfiles include lines showing package scope mismatch against bundle scope:
Skipping cross-scope dependency registration ... bundle scope: PerUser, package scope: PerMachineBut both runs also apply
launcher_AllUserssuccessfully in the latest comparison:Applying execute package: launcher_AllUsers ... ALLUSERS="1" ...Requested guidance
InstallAllUsers=1 InstallLauncherAllUsers=1?