summaryrefslogtreecommitdiffstats
path: root/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp
diff options
context:
space:
mode:
authorSteve Dower <steve.dower@python.org>2019-09-09 12:15:07 (GMT)
committerGitHub <noreply@github.com>2019-09-09 12:15:07 (GMT)
commit3a0ddbcdfcbc0f4372905fabf81e093f1b043e99 (patch)
treed04ff401975f69e09445bcf522adf4cb108e3fe1 /Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp
parentbed04b664729e3e6fcee42daa108936360bac6ea (diff)
downloadcpython-3a0ddbcdfcbc0f4372905fabf81e093f1b043e99.zip
cpython-3a0ddbcdfcbc0f4372905fabf81e093f1b043e99.tar.gz
cpython-3a0ddbcdfcbc0f4372905fabf81e093f1b043e99.tar.bz2
bpo-37283: Ensure command-line and unattend.xml setting override previously detected states in Windows installer (GH-15759)
Diffstat (limited to 'Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp')
-rw-r--r--Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp30
1 files changed, 24 insertions, 6 deletions
diff --git a/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp b/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp
index 7cd8fb8..570798d 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: