Issue #26071: bdist_wininst created binaries fail to start and find 32bit Python
This commit is contained in:
commit
709c2aeba6
Binary file not shown.
Binary file not shown.
|
@ -613,6 +613,9 @@ Build
|
||||||
Windows
|
Windows
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #26071: bdist_wininst created binaries fail to start and find
|
||||||
|
32bit Python
|
||||||
|
|
||||||
- Issue #26073: Update the list of magic numbers in launcher
|
- Issue #26073: Update the list of magic numbers in launcher
|
||||||
|
|
||||||
- Issue #26065: Excludes venv from library when generating embeddable
|
- Issue #26065: Excludes venv from library when generating embeddable
|
||||||
|
|
|
@ -70,6 +70,8 @@
|
||||||
<Optimization>MinSpace</Optimization>
|
<Optimization>MinSpace</Optimization>
|
||||||
<AdditionalIncludeDirectories>$(PySourcePath)Modules\zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(PySourcePath)Modules\zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
<PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<RuntimeLibrary Condition="'$(Configuration)'=='Debug'">MultiThreadedDebug</RuntimeLibrary>
|
||||||
|
<RuntimeLibrary Condition="'$(Configuration)'=='Release'">MultiThreaded</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ResourceCompile>
|
<ResourceCompile>
|
||||||
<AdditionalIncludeDirectories>$(PySourcePath)PC\bdist_wininst;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(PySourcePath)PC\bdist_wininst;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
|
|
@ -153,6 +153,13 @@ char *failure_reason = NULL;
|
||||||
HANDLE hBitmap;
|
HANDLE hBitmap;
|
||||||
char *bitmap_bytes;
|
char *bitmap_bytes;
|
||||||
|
|
||||||
|
static const char *REGISTRY_SUFFIX_6432 =
|
||||||
|
#ifdef MS_WIN64
|
||||||
|
"";
|
||||||
|
#else
|
||||||
|
"-32";
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define WM_NUMFILES WM_USER+1
|
#define WM_NUMFILES WM_USER+1
|
||||||
/* wParam: 0, lParam: total number of files */
|
/* wParam: 0, lParam: total number of files */
|
||||||
|
@ -657,8 +664,8 @@ static HINSTANCE LoadPythonDll(char *fname)
|
||||||
if (h)
|
if (h)
|
||||||
return h;
|
return h;
|
||||||
wsprintf(subkey_name,
|
wsprintf(subkey_name,
|
||||||
"SOFTWARE\\Python\\PythonCore\\%d.%d\\InstallPath",
|
"SOFTWARE\\Python\\PythonCore\\%d.%d%s\\InstallPath",
|
||||||
py_major, py_minor);
|
py_major, py_minor, REGISTRY_SUFFIX_6432);
|
||||||
if (ERROR_SUCCESS != RegQueryValue(HKEY_CURRENT_USER, subkey_name,
|
if (ERROR_SUCCESS != RegQueryValue(HKEY_CURRENT_USER, subkey_name,
|
||||||
fullpath, &size) &&
|
fullpath, &size) &&
|
||||||
ERROR_SUCCESS != RegQueryValue(HKEY_LOCAL_MACHINE, subkey_name,
|
ERROR_SUCCESS != RegQueryValue(HKEY_LOCAL_MACHINE, subkey_name,
|
||||||
|
@ -666,7 +673,9 @@ static HINSTANCE LoadPythonDll(char *fname)
|
||||||
return NULL;
|
return NULL;
|
||||||
strcat(fullpath, "\\");
|
strcat(fullpath, "\\");
|
||||||
strcat(fullpath, fname);
|
strcat(fullpath, fname);
|
||||||
return LoadLibrary(fullpath);
|
// We use LOAD_WITH_ALTERED_SEARCH_PATH to ensure any dependent DLLs
|
||||||
|
// next to the Python DLL (eg, the CRT DLL) are also loaded.
|
||||||
|
return LoadLibraryEx(fullpath, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int prepare_script_environment(HINSTANCE hPython)
|
static int prepare_script_environment(HINSTANCE hPython)
|
||||||
|
@ -2254,6 +2263,8 @@ int DoInstall(void)
|
||||||
GetPrivateProfileString("Setup", "user_access_control", "",
|
GetPrivateProfileString("Setup", "user_access_control", "",
|
||||||
user_access_control, sizeof(user_access_control), ini_file);
|
user_access_control, sizeof(user_access_control), ini_file);
|
||||||
|
|
||||||
|
strcat(target_version, REGISTRY_SUFFIX_6432);
|
||||||
|
|
||||||
// See if we need to do the Vista UAC magic.
|
// See if we need to do the Vista UAC magic.
|
||||||
if (strcmp(user_access_control, "force")==0) {
|
if (strcmp(user_access_control, "force")==0) {
|
||||||
if (!MyIsUserAnAdmin()) {
|
if (!MyIsUserAnAdmin()) {
|
||||||
|
|
Loading…
Reference in New Issue