diff options
author | Steve Dower <steve.dower@microsoft.com> | 2015-09-11 18:27:45 (GMT) |
---|---|---|
committer | Steve Dower <steve.dower@microsoft.com> | 2015-09-11 18:27:45 (GMT) |
commit | 6695c2e356992d1e7c359c47cd243c65182996e8 (patch) | |
tree | 2ddb60ed62b629e00c1b1881326c47e8066b512c /Tools/msi/bundle | |
parent | 1c30e7ef56ff6e42f5db4323f0a276d54d079596 (diff) | |
parent | 76b7133f58ebd47cb7eb20c6cb760141dc5bd0b2 (diff) | |
download | cpython-6695c2e356992d1e7c359c47cd243c65182996e8.zip cpython-6695c2e356992d1e7c359c47cd243c65182996e8.tar.gz cpython-6695c2e356992d1e7c359c47cd243c65182996e8.tar.bz2 |
Merge from 3.5.0
Diffstat (limited to 'Tools/msi/bundle')
-rw-r--r-- | Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp b/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp index 416f2d5..35ed2fe 100644 --- a/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp +++ b/Tools/msi/bundle/bootstrap/PythonBootstrapperApplication.cpp @@ -723,6 +723,36 @@ public: // IBootstrapperApplication hrStatus = EvaluateConditions(); } + if (SUCCEEDED(hrStatus)) { + // Ensure the default path has been set + LONGLONG installAll; + LPWSTR targetDir = nullptr; + LPWSTR defaultTargetDir = nullptr; + + hrStatus = BalGetStringVariable(L"TargetDir", &targetDir); + if (FAILED(hrStatus) || !targetDir || !targetDir[0]) { + ReleaseStr(targetDir); + targetDir = nullptr; + + if (FAILED(BalGetNumericVariable(L"InstallAllUsers", &installAll))) { + installAll = 0; + } + + hrStatus = BalGetStringVariable( + installAll ? L"DefaultAllUsersTargetDir" : L"DefaultJustForMeTargetDir", + &defaultTargetDir + ); + + if (SUCCEEDED(hrStatus) && defaultTargetDir) { + if (defaultTargetDir[0] && SUCCEEDED(BalFormatString(defaultTargetDir, &targetDir))) { + hrStatus = _engine->SetVariableString(L"TargetDir", targetDir); + ReleaseStr(targetDir); + } + ReleaseStr(defaultTargetDir); + } + } + } + SetState(PYBA_STATE_DETECTED, hrStatus); // If we're not interacting with the user or we're doing a layout or we're just after a force restart |