When loading the Python dll to run the postinstall script, try to load
it from the install directory (as reported by the registry) in case it
is not found on the default Loadlibrary search path.

Fixes SF 935091: bdist_winist post-install script fails on non-admin Python

Already backported.
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 @@
 	{"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 @@
 	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 @@
 						"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 @@
 						"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 @@
 
 			argv[0] = fname;
 
-			hPython = LoadLibrary(pythondll);
+			hPython = LoadPythonDll(pythondll);
 			if (hPython) {
 				int result;
 				result = run_installscript(hPython, fname, 2, argv);