bpo-36085: Add installer check for KB2533625 (GH-12636)

This commit is contained in:
Steve Dower 2019-03-30 20:58:17 -07:00 committed by GitHub
parent ac19d96527
commit 79da388a40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 11 deletions

View File

@ -754,7 +754,9 @@ Changes in the Python API
used, and modifications to these will no longer have any effect on normal DLL used, and modifications to these will no longer have any effect on normal DLL
resolution. If your application relies on these mechanisms, you should check resolution. If your application relies on these mechanisms, you should check
for :func:`~os.add_dll_directory` and if it exists, use it to add your DLLs for :func:`~os.add_dll_directory` and if it exists, use it to add your DLLs
directory while loading your library. directory while loading your library. Note that Windows 7 users will need to
ensure that Windows Update KB2533625 has been installed (this is also verified
by the installer).
(See :issue:`36085`.) (See :issue:`36085`.)

View File

@ -6,7 +6,7 @@ set PCBUILD=%D%..\..\PCbuild\
set BUILDX86= set BUILDX86=
set BUILDX64= set BUILDX64=
set BUILDDOC= set BUILDDOC=
set BUILDTEST=--test-marker set BUILDTEST=
set BUILDPACK= set BUILDPACK=
set REBUILD= set REBUILD=
@ -16,6 +16,7 @@ if "%~1" EQU "-x86" (set BUILDX86=1) && shift && goto CheckOpts
if "%~1" EQU "-x64" (set BUILDX64=1) && shift && goto CheckOpts if "%~1" EQU "-x64" (set BUILDX64=1) && shift && goto CheckOpts
if "%~1" EQU "--doc" (set BUILDDOC=1) && shift && goto CheckOpts if "%~1" EQU "--doc" (set BUILDDOC=1) && shift && goto CheckOpts
if "%~1" EQU "--no-test-marker" (set BUILDTEST=) && shift && goto CheckOpts if "%~1" EQU "--no-test-marker" (set BUILDTEST=) && shift && goto CheckOpts
if "%~1" EQU "--test-marker" (set BUILDTEST=--test-marker) && shift && goto CheckOpts
if "%~1" EQU "--pack" (set BUILDPACK=1) && shift && goto CheckOpts if "%~1" EQU "--pack" (set BUILDPACK=1) && shift && goto CheckOpts
if "%~1" EQU "-r" (set REBUILD=-r) && shift && goto CheckOpts if "%~1" EQU "-r" (set REBUILD=-r) && shift && goto CheckOpts
@ -69,11 +70,12 @@ if defined BUILDX64 (
exit /B 0 exit /B 0
:Help :Help
echo build.bat [-x86] [-x64] [--doc] [-h] [--no-test-marker] [--pack] [-r] echo build.bat [-x86] [-x64] [--doc] [-h] [--test-marker] [--pack] [-r]
echo. echo.
echo -x86 Build x86 installers echo -x86 Build x86 installers
echo -x64 Build x64 installers echo -x64 Build x64 installers
echo --doc Build CHM documentation echo --doc Build CHM documentation
echo --no-test-marker Build without test markers echo --test-marker Build with test markers
echo --no-test-marker Build without test markers (default)
echo --pack Embed core MSIs into installer echo --pack Embed core MSIs into installer
echo -r Rebuild rather than incremental build echo -r Rebuild rather than incremental build

View File

@ -2989,9 +2989,20 @@ private:
LOC_STRING *pLocString = nullptr; LOC_STRING *pLocString = nullptr;
if (IsWindowsServer()) { if (IsWindowsServer()) {
if (IsWindowsVersionOrGreater(6, 1, 1)) { if (IsWindowsVersionOrGreater(6, 2, 0)) {
BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Target OS is Windows Server 2012 or later");
return;
} else if (IsWindowsVersionOrGreater(6, 1, 1)) {
HMODULE hKernel32 = GetModuleHandleW(L"kernel32");
if (hKernel32 && !GetProcAddress(hKernel32, "AddDllDirectory")) {
BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Detected Windows Server 2008 R2 without KB2533625");
BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "KB2533625 update is required to continue.");
/* The "MissingSP1" error also specifies updates are required */
LocGetString(_wixLoc, L"#(loc.FailureWS2K8R2MissingSP1)", &pLocString);
} else {
BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Target OS is Windows Server 2008 R2 or later"); BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Target OS is Windows Server 2008 R2 or later");
return; return;
}
} else if (IsWindowsVersionOrGreater(6, 1, 0)) { } else if (IsWindowsVersionOrGreater(6, 1, 0)) {
BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Detected Windows Server 2008 R2"); BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Detected Windows Server 2008 R2");
BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Service Pack 1 is required to continue installation"); BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Service Pack 1 is required to continue installation");
@ -3009,9 +3020,20 @@ private:
LocGetString(_wixLoc, L"#(loc.FailureWS2K3OrEarlier)", &pLocString); LocGetString(_wixLoc, L"#(loc.FailureWS2K3OrEarlier)", &pLocString);
} }
} else { } else {
if (IsWindows7SP1OrGreater()) { if (IsWindows8OrGreater()) {
BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Target OS is Windows 8 or later");
return;
} else if (IsWindows7SP1OrGreater()) {
HMODULE hKernel32 = GetModuleHandleW(L"kernel32");
if (hKernel32 && !GetProcAddress(hKernel32, "AddDllDirectory")) {
BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Detected Windows 7 SP1 without KB2533625");
BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "KB2533625 update is required to continue.");
/* The "MissingSP1" error also specifies updates are required */
LocGetString(_wixLoc, L"#(loc.FailureWin7MissingSP1)", &pLocString);
} else {
BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Target OS is Windows 7 SP1 or later"); BalLog(BOOTSTRAPPER_LOG_LEVEL_STANDARD, "Target OS is Windows 7 SP1 or later");
return; return;
}
} else if (IsWindows7OrGreater()) { } else if (IsWindows7OrGreater()) {
BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Detected Windows 7 RTM"); BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Detected Windows 7 RTM");
BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Service Pack 1 is required to continue installation"); BalLog(BOOTSTRAPPER_LOG_LEVEL_ERROR, "Service Pack 1 is required to continue installation");

View File

@ -62,9 +62,6 @@
<Component Id="libssl.pdb" Directory="DLLs" Guid="*"> <Component Id="libssl.pdb" Directory="DLLs" Guid="*">
<File Name="libssl$(var.ssltag).pdb" KeyPath="yes" /> <File Name="libssl$(var.ssltag).pdb" KeyPath="yes" />
</Component> </Component>
<Component Id="libffi.pdb" Directory="DLLs" Guid="*">
<File Name="libffi-7.pdb" KeyPath="yes" />
</Component>
<Component Id="venvlauncher.pdb" Directory="Lib_venv_scripts_nt__pdbs" Guid="*"> <Component Id="venvlauncher.pdb" Directory="Lib_venv_scripts_nt__pdbs" Guid="*">
<File Name="python.pdb" Source="venvlauncher.pdb" KeyPath="yes" /> <File Name="python.pdb" Source="venvlauncher.pdb" KeyPath="yes" />
</Component> </Component>