diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2019-09-09 06:15:27 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-09 06:15:27 -0700 |
commit | d3b8a6bf7c5f7574a3256468c4d0a755ba7a9048 (patch) | |
tree | e6fe186586f162c0b0d6be067f315c5fac7b74fd /Tools | |
parent | 9ae9ac1061c76d637ebe9c1d6c6c802311d6ddba (diff) | |
download | cpython-git-d3b8a6bf7c5f7574a3256468c4d0a755ba7a9048.tar.gz |
bpo-37283: Ensure command-line and unattend.xml setting override previously detected states in Windows installer (GH-15759)
(cherry picked from commit 3a0ddbcdfcbc0f4372905fabf81e093f1b043e99)
Co-authored-by: Steve Dower <steve.dower@python.org>
Diffstat (limited to 'Tools')
-rw-r--r-- | Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp | 30 | ||||
-rw-r--r-- | Tools/msi/bundle/bundle.wxs | 3 |
2 files changed, 25 insertions, 8 deletions
diff --git a/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp b/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp index 2e468b7e57..cd4a1f8feb 100644 --- a/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp +++ b/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp @@ -727,9 +727,13 @@ public: // IBootstrapperApplication BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Failed to load AssociateFiles state: error code 0x%08X", hr); } - _engine->SetVariableNumeric(L"Include_launcher", 1); + LONGLONG includeLauncher; + if (FAILED(BalGetNumericVariable(L"Include_launcher", &includeLauncher)) + || includeLauncher == -1) { + _engine->SetVariableNumeric(L"Include_launcher", 1); + _engine->SetVariableNumeric(L"InstallLauncherAllUsers", fPerMachine ? 1 : 0); + } _engine->SetVariableNumeric(L"DetectedOldLauncher", 1); - _engine->SetVariableNumeric(L"InstallLauncherAllUsers", fPerMachine ? 1 : 0); } return CheckCanceled() ? IDCANCEL : IDNOACTION; } @@ -796,6 +800,12 @@ public: // IBootstrapperApplication } } + LONGLONG includeLauncher; + if (SUCCEEDED(BalGetNumericVariable(L"Include_launcher", &includeLauncher)) + && includeLauncher != -1) { + detectedLauncher = FALSE; + } + if (detectedLauncher) { /* When we detect the current version of the launcher. */ _engine->SetVariableNumeric(L"Include_launcher", 1); @@ -820,6 +830,14 @@ public: // IBootstrapperApplication } if (SUCCEEDED(hrStatus)) { + LONGLONG includeLauncher; + if (SUCCEEDED(BalGetNumericVariable(L"Include_launcher", &includeLauncher)) + && includeLauncher == -1) { + _engine->SetVariableNumeric(L"Include_launcher", 1); + } + } + + if (SUCCEEDED(hrStatus)) { hrStatus = EvaluateConditions(); } @@ -1451,6 +1469,10 @@ private: hr = ParseOverridableVariablesFromXml(pixdManifest); BalExitOnFailure(hr, "Failed to read overridable variables."); + if (_command.action == BOOTSTRAPPER_ACTION_MODIFY) { + LoadOptionalFeatureStates(_engine); + } + hr = ParseVariablesFromUnattendXml(); ExitOnFailure(hr, "Failed to read unattend.ini file."); @@ -1478,10 +1500,6 @@ private: hr = UpdateUIStrings(_command.action); BalExitOnFailure(hr, "Failed to load UI strings."); - if (_command.action == BOOTSTRAPPER_ACTION_MODIFY) { - LoadOptionalFeatureStates(_engine); - } - GetBundleFileVersion(); // don't fail if we couldn't get the version info; best-effort only LExit: diff --git a/Tools/msi/bundle/bundle.wxs b/Tools/msi/bundle/bundle.wxs index f6cff6fc35..ddd6870f62 100644 --- a/Tools/msi/bundle/bundle.wxs +++ b/Tools/msi/bundle/bundle.wxs @@ -71,11 +71,10 @@ <Variable Name="Include_tools" Value="1" bal:Overridable="yes" /> <Variable Name="Include_tcltk" Value="1" bal:Overridable="yes" /> <Variable Name="Include_pip" Value="1" bal:Overridable="yes" /> + <Variable Name="Include_launcher" Value="-1" bal:Overridable="yes" /> <?if "$(var.PyTestExt)"="" ?> - <Variable Name="Include_launcher" Value="1" bal:Overridable="yes" /> <Variable Name="Include_launcherState" Value="enabled" bal:Overridable="yes" /> <?else ?> - <Variable Name="Include_launcher" Value="0" /> <Variable Name="Include_launcherState" Value="disable" /> <?endif ?> <Variable Name="Include_symbols" Value="0" bal:Overridable="yes" /> |