Issue #25071: Windows installer should not require TargetDir parameter when installing quietly

This commit is contained in:
Steve Dower 2015-09-11 10:56:59 -07:00
parent 0db1c42c65
commit 76b7133f58
2 changed files with 35 additions and 0 deletions

View File

@ -7,6 +7,11 @@ What's New in Python 3.5.0 final?
Release date: 2015-09-13
Build
-----
- Issue #25071: Windows installer should not require TargetDir
parameter when installing quietly
What's New in Python 3.5.0 release candidate 4?
===============================================

View File

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