summaryrefslogtreecommitdiffstats
path: root/PC
diff options
context:
space:
mode:
Diffstat (limited to 'PC')
-rw-r--r--PC/bdist_wininst/install.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/PC/bdist_wininst/install.c b/PC/bdist_wininst/install.c
index 64e213e..a715528 100644
--- a/PC/bdist_wininst/install.c
+++ b/PC/bdist_wininst/install.c
@@ -590,6 +590,22 @@ PyMethodDef meth[] = {
{"message_box", PyMessageBox, METH_VARARGS, NULL},
};
+static HINSTANCE LoadPythonDll(char *fname)
+{
+ char fullpath[_MAX_PATH];
+ LONG size = sizeof(fullpath);
+ HINSTANCE h = LoadLibrary(fname);
+ if (h)
+ return h;
+ if (ERROR_SUCCESS != RegQueryValue(HKEY_CURRENT_USER,
+ "SOFTWARE\\Python\\PythonCore\\2.3\\InstallPath",
+ fullpath, &size))
+ return NULL;
+ strcat(fullpath, "\\");
+ strcat(fullpath, fname);
+ return LoadLibrary(fullpath);
+}
+
static int prepare_script_environment(HINSTANCE hPython)
{
PyObject *mod;
@@ -715,7 +731,7 @@ static int run_simple_script(char *script)
freopen(tempname, "a", stderr);
freopen(tempname, "a", stdout);
- hPython = LoadLibrary (pythondll);
+ hPython = LoadPythonDll(pythondll);
if (!hPython) {
set_failure_reason("Can't load Python for pre-install script");
return -1;
@@ -1745,7 +1761,7 @@ InstallFilesDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
"Compiling files to .pyc...");
SetDlgItemText(hDialog, IDC_INFO, "Loading python...");
- hPython = LoadLibrary(pythondll);
+ hPython = LoadPythonDll(pythondll);
if (hPython) {
errors = compile_filelist(hPython, FALSE);
FreeLibrary(hPython);
@@ -1764,7 +1780,7 @@ InstallFilesDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
"Compiling files to .pyo...");
SetDlgItemText(hDialog, IDC_INFO, "Loading python...");
- hPython = LoadLibrary(pythondll);
+ hPython = LoadPythonDll(pythondll);
if (hPython) {
errors = compile_filelist(hPython, TRUE);
FreeLibrary(hPython);
@@ -1840,7 +1856,7 @@ FinishedDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
argv[0] = fname;
- hPython = LoadLibrary(pythondll);
+ hPython = LoadPythonDll(pythondll);
if (hPython) {
int result;
result = run_installscript(hPython, fname, 2, argv);