[Python-checkins] CVS: distutils/misc install.c,1.12,1.13 install.rc,1.6,1.7 resource.h,1.5,1.6 wininst.dsp,1.3,1.4 wininst.exe,1.10,1.11
Thomas Heller
theller@users.sourceforge.net
2001年10月05日 13:38:13 -0700
Update of /cvsroot/python/distutils/misc
In directory usw-pr-cvs1:/tmp/cvs-serv25279
Modified Files:
install.c install.rc resource.h wininst.dsp wininst.exe
Log Message:
Reorganized the code which determines the install-scheme (sys.prefix
os sys.prefix\lib\site-packages).
Display a message if no usable Python versions are found instead
of leaving the poor user staring at an empty listbox to select
something from ;-)
Additional text-field displaying the installation directory.
(Code to browse for and use other Python versions except those found
in the registry is commented out, because it is not yet complete.)
Index: install.c
===================================================================
RCS file: /cvsroot/python/distutils/misc/install.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** install.c 2001年09月05日 12:55:53 1.12
--- install.c 2001年10月05日 20:38:11 1.13
***************
*** 49,53 ****
/*
* To Do:
! * - install a help-button, which will display the above
* text to the user
* - should there be a possibility to display a README file
--- 49,62 ----
/*
* To Do:
! *
! * display some explanation when no python version is found
! * instead showing the user an empty listbox to select something from.
! *
! * Finish the code so that we can use other python installations
! * additionaly to those found in the registry,
! * and then #define USE_OTHER_PYTHON_VERSIONS
! *
! * - install a help-button, which will display something meaningful
! * to the poor user.
* text to the user
* - should there be a possibility to display a README file
***************
*** 60,63 ****
--- 69,73 ----
#include <windows.h>
#include <commctrl.h>
+ #include <imagehlp.h>
#include "resource.h"
***************
*** 98,102 ****
DWORD arc_size; /* number of bytes in archive */
int exe_size; /* number of bytes for exe-file portion */
! char install_dir[MAX_PATH];
char pythondll[MAX_PATH];
BOOL pyc_compile, pyo_compile;
--- 108,112 ----
DWORD arc_size; /* number of bytes in archive */
int exe_size; /* number of bytes for exe-file portion */
! char python_dir[MAX_PATH];
char pythondll[MAX_PATH];
BOOL pyc_compile, pyo_compile;
***************
*** 118,121 ****
--- 128,151 ----
static BOOL notify (int code, char *fmt, ...);
+ /* Note: If scheme.prefix is nonempty, it must end with a '\'! */
+ /* Note: purelib must be the FIRST entry! */
+ SCHEME old_scheme[] = {
+ { "PURELIB", "" },
+ { "PLATLIB", "" },
+ { "HEADERS", "" }, /* 'Include/dist_name' part already in archive */
+ { "SCRIPTS", "Scripts\\" },
+ { "DATA", "" },
+ { NULL, NULL },
+ };
+
+ SCHEME new_scheme[] = {
+ { "PURELIB", "Lib\\site-packages\\" },
+ { "PLATLIB", "Lib\\site-packages\\" },
+ { "HEADERS", "" }, /* 'Include/dist_name' part already in archive */
+ { "SCRIPTS", "Scripts\\" },
+ { "DATA", "" },
+ { NULL, NULL },
+ };
+
static void unescape (char *dst, char *src, unsigned size)
{
***************
*** 221,224 ****
--- 251,256 ----
void (__cdecl * Py_Finalize)(void);
int (__cdecl * PyRun_SimpleString)(char *);
+ void* (__cdecl * PySys_GetObject)(char *);
+
int *Py_OptimizeFlag;
int errors = 0;
***************
*** 247,250 ****
--- 279,285 ----
"Py_OptimizeFlag");
+ PySys_GetObject = (void* (*)(char *))GetProcAddress
+ (hPython,"PySys_GetObject");
+
*Py_OptimizeFlag = optimize_flag;
Py_SetProgramName(modulename);
***************
*** 610,614 ****
--- 645,837 ----
}
+ #ifdef USE_OTHER_PYTHON_VERSIONS
+ /* These are really private variables used to communicate
+ * between StatusRoutine and CheckPythonExe
+ */
+ char bound_image_dll[_MAX_PATH];
+ int bound_image_major;
+ int bound_image_minor;
+
+ static BOOL __stdcall StatusRoutine(IMAGEHLP_STATUS_REASON reason,
+ PSTR ImageName,
+ PSTR DllName,
+ ULONG Va,
+ ULONG Parameter)
+ {
+ char fname[_MAX_PATH];
+ int int_version;
+
+ switch(reason) {
+ case BindOutOfMemory:
+ case BindRvaToVaFailed:
+ case BindNoRoomInImage:
+ case BindImportProcedureFailed:
+ break;
+
+ case BindImportProcedure:
+ case BindForwarder:
+ case BindForwarderNOT:
+ case BindImageModified:
+ case BindExpandFileHeaders:
+ case BindImageComplete:
+ case BindSymbolsNotUpdated:
+ case BindMismatchedSymbols:
+ case BindImportModuleFailed:
+ break;
+
+ case BindImportModule:
+ if (1 == sscanf(DllName, "python%d", &int_version)) {
+ SearchPath(NULL, DllName, NULL, sizeof(fname), fname, NULL);
+ strcpy(bound_image_dll, fname);
+ bound_image_major = int_version / 10;
+ bound_image_minor = int_version % 10;
+ OutputDebugString("BOUND ");
+ OutputDebugString(fname);
+ OutputDebugString("\n");
+ }
+ break;
+ }
+ return TRUE;
+ }
+
/*
+ */
+ static LPSTR get_sys_prefix (LPSTR exe, LPSTR dll)
+ {
+ void (__cdecl * Py_Initialize)(void);
+ void (__cdecl * Py_SetProgramName)(char *);
+ void (__cdecl * Py_Finalize)(void);
+ void* (__cdecl * PySys_GetObject)(char *);
+ void (__cdecl * PySys_SetArgv)(int, char **);
+ char* (__cdecl * Py_GetPrefix)(void);
+ char* (__cdecl * Py_GetPath)(void);
+ HINSTANCE hPython;
+ LPSTR prefix = NULL;
+ int (__cdecl * PyRun_SimpleString)(char *);
+
+ {
+ char Buffer[256];
+ wsprintf(Buffer, "PYTHONHOME=%s", exe);
+ *strrchr(Buffer, '\\') = '0円';
+ // MessageBox(GetFocus(), Buffer, "PYTHONHOME", MB_OK);
+ _putenv(Buffer);
+ _putenv("PYTHONPATH=");
+ }
+
+ hPython = LoadLibrary (dll);
+ if (!hPython)
+ return NULL;
+ Py_Initialize = (void (*)(void))GetProcAddress
+ (hPython,"Py_Initialize");
+
+ PySys_SetArgv = (void (*)(int, char **))GetProcAddress
+ (hPython,"PySys_SetArgv");
+
+ PyRun_SimpleString = (int (*)(char *))GetProcAddress
+ (hPython,"PyRun_SimpleString");
+
+ Py_SetProgramName = (void (*)(char *))GetProcAddress
+ (hPython,"Py_SetProgramName");
+
+ PySys_GetObject = (void* (*)(char *))GetProcAddress
+ (hPython,"PySys_GetObject");
+
+ Py_GetPrefix = (char * (*)(void))GetProcAddress
+ (hPython,"Py_GetPrefix");
+
+ Py_GetPath = (char * (*)(void))GetProcAddress
+ (hPython,"Py_GetPath");
+
+ Py_Finalize = (void (*)(void))GetProcAddress (hPython,
+ "Py_Finalize");
+ Py_SetProgramName(exe);
+ Py_Initialize ();
+ PySys_SetArgv(1, &exe);
+
+ MessageBox(GetFocus(), Py_GetPrefix(), "PREFIX", MB_OK);
+ MessageBox(GetFocus(), Py_GetPath(), "PATH", MB_OK);
+
+ Py_Finalize ();
+ FreeLibrary (hPython);
+
+ return prefix;
+ }
+
+ static BOOL CheckPythonExe(LPSTR pathname, LPSTR version, int *pmajor, int *pminor)
+ {
+ bound_image_dll[0] = '0円';
+ if (!BindImageEx(BIND_NO_BOUND_IMPORTS | BIND_NO_UPDATE | BIND_ALL_IMAGES,
+ pathname,
+ NULL,
+ NULL,
+ StatusRoutine))
+ return SystemError(0, "Could not bind image");
+ if (bound_image_dll[0] == '0円')
+ return SystemError(0, "Does not seem to be a python executable");
+ *pmajor = bound_image_major;
+ *pminor = bound_image_minor;
+ if (version && *version) {
+ char core_version[12];
+ wsprintf(core_version, "%d.%d", bound_image_major, bound_image_minor);
+ if (strcmp (version, core_version))
+ return SystemError(0, "Wrong Python version");
+ }
+ get_sys_prefix(pathname, bound_image_dll);
+ return TRUE;
+ }
+
+ /*
+ * Browse for other python versions. Insert it into the listbox specified
+ * by hwnd. version, if not NULL or empty, is the version required.
+ */
+ static BOOL GetOtherPythonVersion(HWND hwnd, LPSTR version)
+ {
+ char vers_name[_MAX_PATH + 80];
+ DWORD itemindex;
+ OPENFILENAME of;
+ char pathname[_MAX_PATH];
+ DWORD result;
+
+ strcpy(pathname, "python.exe");
+
+ memset(&of, 0, sizeof(of));
+ of.lStructSize = sizeof(OPENFILENAME);
+ of.hwndOwner = GetParent(hwnd);
+ of.hInstance = NULL;
+ of.lpstrFilter = "python.exe0円python.exe0円";
+ of.lpstrCustomFilter = NULL;
+ of.nMaxCustFilter = 0;
+ of.nFilterIndex = 1;
+ of.lpstrFile = pathname;
+ of.nMaxFile = sizeof(pathname);
+ of.lpstrFileTitle = NULL;
+ of.nMaxFileTitle = 0;
+ of.lpstrInitialDir = NULL;
+ of.lpstrTitle = "Python executable";
+ of.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST;
+ of.lpstrDefExt = "exe";
+
+ result = GetOpenFileName(&of);
+ if (result) {
+ int major, minor;
+ if (!CheckPythonExe(pathname, version, &major, &minor)) {
+ return FALSE;
+ }
+ *strrchr(pathname, '\\') = '0円';
+ wsprintf (vers_name, "Python Version %d.%d in %s",
+ major, minor, pathname);
+ itemindex = SendMessage (hwnd, LB_INSERTSTRING, -1,
+ (LPARAM)(LPSTR)vers_name);
+ SendMessage(hwnd, LB_SETCURSEL, itemindex, 0);
+ SendMessage (hwnd, LB_SETITEMDATA, itemindex,
+ (LPARAM)(LPSTR)strdup (pathname));
+ return TRUE;
+ }
+ return FALSE;
+ }
+ #endif /* USE_OTHER_PYTHON_VERSIONS */
+
+
+ /*
* Fill the listbox specified by hwnd with all python versions found
* in the registry. version, if not NULL or empty, is the version
***************
*** 660,663 ****
--- 883,896 ----
}
+ /* Return the installation scheme depending on Python version number */
+ SCHEME *GetScheme(int major, int minor)
+ {
+ if (major > 2)
+ return new_scheme;
+ else if((major == 2) && (minor >= 2))
+ return new_scheme;
+ return old_scheme;
+ }
+
BOOL CALLBACK
SelectPythonDlgProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
***************
*** 682,685 ****
--- 915,931 ----
SendDlgItemMessage (hwnd, IDC_VERSIONS_LIST, LB_SETCURSEL,
count-1, 0);
+ if (count == 0) {
+ char Buffer[4096];
+ char *msg;
+ if (target_version && target_version[0]) {
+ wsprintf(Buffer,
+ "Python version %s required, which was not found"
+ " in the registry.", target_version);
+ msg = Buffer;
+ } else
+ msg = "No Python installation found in the registry.";
+ MessageBox(hwnd, msg, "Cannot install",
+ MB_OK | MB_ICONSTOP);
+ }
}
goto UpdateInstallDir;
***************
*** 688,691 ****
--- 934,944 ----
case WM_COMMAND:
switch (LOWORD (wParam)) {
+ /*
+ case IDC_OTHERPYTHON:
+ if (GetOtherPythonVersion(GetDlgItem(hwnd, IDC_VERSIONS_LIST),
+ target_version))
+ goto UpdateInstallDir;
+ break;
+ */
case IDC_VERSIONS_LIST:
switch (HIWORD (wParam)) {
***************
*** 702,706 ****
PSWIZB_BACK);
SetDlgItemText (hwnd, IDC_PATH, "");
! strcpy (install_dir, "");
strcpy (pythondll, "");
} else {
--- 955,960 ----
PSWIZB_BACK);
SetDlgItemText (hwnd, IDC_PATH, "");
! SetDlgItemText (hwnd, IDC_INSTALL_PATH, "");
! strcpy (python_dir, "");
strcpy (pythondll, "");
} else {
***************
*** 709,712 ****
--- 963,967 ----
PropSheet_SetWizButtons(GetParent(hwnd),
PSWIZB_BACK | PSWIZB_NEXT);
+ /* Get the python directory */
cp = (LPSTR)SendDlgItemMessage (hwnd,
IDC_VERSIONS_LIST,
***************
*** 714,719 ****
id,
0);
! strcpy (install_dir, cp);
! SetDlgItemText (hwnd, IDC_PATH, install_dir);
result = SendDlgItemMessage (hwnd, IDC_VERSIONS_LIST,
LB_GETTEXTLEN, (WPARAM)id, 0);
--- 969,975 ----
id,
0);
! strcpy (python_dir, cp);
! SetDlgItemText (hwnd, IDC_PATH, python_dir);
! /* retrieve the python version and pythondll to use */
result = SendDlgItemMessage (hwnd, IDC_VERSIONS_LIST,
LB_GETTEXTLEN, (WPARAM)id, 0);
***************
*** 732,735 ****
--- 988,1001 ----
} else
strcpy (pythondll, "");
+ /* retrieve the scheme for this version */
+ {
+ char install_path[_MAX_PATH];
+ SCHEME *scheme = GetScheme(py_major, py_minor);
+ strcpy(install_path, python_dir);
+ if (install_path[strlen(install_path)-1] != '\\')
+ strcat(install_path, "\\");
+ strcat(install_path, scheme[0].prefix);
+ SetDlgItemText (hwnd, IDC_INSTALL_PATH, install_path);
+ }
}
}
***************
*** 865,887 ****
}
- /* Note: If scheme.prefix is nonempty, it must end with a '\'! */
- SCHEME old_scheme[] = {
- { "PURELIB", "" },
- { "PLATLIB", "" },
- { "HEADERS", "" }, /* 'Include/dist_name' part already in archive */
- { "SCRIPTS", "Scripts\\" },
- { "DATA", "" },
- { NULL, NULL },
- };
-
- SCHEME new_scheme[] = {
- { "PURELIB", "Lib\\site-packages\\" },
- { "PLATLIB", "Lib\\site-packages\\" },
- { "HEADERS", "" }, /* 'Include/dist_name' part already in archive */
- { "SCRIPTS", "Scripts\\" },
- { "DATA", "" },
- { NULL, NULL },
- };
-
BOOL CALLBACK
InstallFilesDlgProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
--- 1131,1134 ----
***************
*** 935,944 ****
/* Make sure the installation directory name ends in a */
/* backslash */
! if (install_dir[strlen(install_dir)-1] != '\\')
! strcat (install_dir, "\\");
/* Strip the trailing backslash again */
! install_dir[strlen(install_dir)-1] = '0円';
! OpenLogfile(install_dir);
/*
--- 1182,1191 ----
/* Make sure the installation directory name ends in a */
/* backslash */
! if (python_dir[strlen(python_dir)-1] != '\\')
! strcat (python_dir, "\\");
/* Strip the trailing backslash again */
! python_dir[strlen(python_dir)-1] = '0円';
! OpenLogfile(python_dir);
/*
***************
*** 961,974 ****
}
*/
! scheme = old_scheme;
! if (py_major > 2)
! scheme = new_scheme;
! else if((py_major == 2) && (py_minor >= 2))
! scheme = new_scheme;
/* Extract all files from the archive */
SetDlgItemText (hwnd, IDC_TITLE, "Installing files...");
success = unzip_archive (scheme,
! install_dir, arc_data,
arc_size, notify);
/* Compile the py-files */
--- 1208,1217 ----
}
*/
! scheme = GetScheme(py_major, py_minor);
/* Extract all files from the archive */
SetDlgItemText (hwnd, IDC_TITLE, "Installing files...");
success = unzip_archive (scheme,
! python_dir, arc_data,
arc_size, notify);
/* Compile the py-files */
***************
*** 1416,1420 ****
{
extern int __argc;
! extern char **argv;
char *basename;
--- 1659,1663 ----
{
extern int __argc;
! extern char **__argv;
char *basename;
Index: install.rc
===================================================================
RCS file: /cvsroot/python/distutils/misc/install.rc,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** install.rc 2001年04月10日 18:55:07 1.6
--- install.rc 2001年10月05日 20:38:11 1.7
***************
*** 87,91 ****
STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Setup"
! FONT 8, "MS Sans Serif"
BEGIN
LTEXT "This Wizard will install %s on your computer. Click Next to continue or Cancel to exit the Setup Wizard.",
--- 87,91 ----
STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Setup"
! FONT 8, "MS Sans Serif", 0, 0, 0x1
BEGIN
LTEXT "This Wizard will install %s on your computer. Click Next to continue or Cancel to exit the Setup Wizard.",
***************
*** 104,114 ****
BEGIN
LTEXT "Select python installation to use:",IDC_TITLE,125,10,
! 247,31,NOT WS_GROUP
! EDITTEXT IDC_PATH,191,157,181,14,ES_AUTOHSCROLL | ES_READONLY
! LTEXT "Installation Directory:",IDC_STATIC,125,158,66,8
! LISTBOX IDC_VERSIONS_LIST,125,41,247,100,LBS_SORT |
LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
CONTROL 110,IDC_BITMAP,"Static",SS_BITMAP | SS_CENTERIMAGE,6,8,
104,163,WS_EX_CLIENTEDGE
END
--- 104,119 ----
BEGIN
LTEXT "Select python installation to use:",IDC_TITLE,125,10,
! 193,12,NOT WS_GROUP
! EDITTEXT IDC_PATH,191,136,181,14,ES_AUTOHSCROLL | ES_READONLY
! LTEXT "Python Directory:",IDC_STATIC,125,137,55,8
! LISTBOX IDC_VERSIONS_LIST,125,24,247,106,LBS_SORT |
LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
CONTROL 110,IDC_BITMAP,"Static",SS_BITMAP | SS_CENTERIMAGE,6,8,
104,163,WS_EX_CLIENTEDGE
+ EDITTEXT IDC_INSTALL_PATH,191,157,181,14,ES_AUTOHSCROLL |
+ ES_READONLY
+ LTEXT "Installation Directory:",IDC_STATIC,125,158,66,8
+ PUSHBUTTON "Find other ...",IDC_OTHERPYTHON,322,7,50,14,NOT
+ WS_VISIBLE
END
***************
*** 116,120 ****
STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Setup"
! FONT 8, "MS Sans Serif"
BEGIN
LTEXT "Click Next to begin the installation. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the Wizard.",
--- 121,125 ----
STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Setup"
! FONT 8, "MS Sans Serif", 0, 0, 0x1
BEGIN
LTEXT "Click Next to begin the installation. If you want to review or change any of your installation settings, click Back. Click Cancel to exit the Wizard.",
***************
*** 130,134 ****
STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Setup"
! FONT 8, "MS Sans Serif"
BEGIN
LTEXT "Click the Finish button to exit the Setup wizard.",
--- 135,139 ----
STYLE WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Setup"
! FONT 8, "MS Sans Serif", 0, 0, 0x1
BEGIN
LTEXT "Click the Finish button to exit the Setup wizard.",
Index: resource.h
===================================================================
RCS file: /cvsroot/python/distutils/misc/resource.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** resource.h 2001年02月19日 09:19:07 1.5
--- resource.h 2001年10月05日 20:38:11 1.6
***************
*** 18,21 ****
--- 18,22 ----
#define IDC_PATH 1007
#define IDC_PYTHON16 1008
+ #define IDC_INSTALL_PATH 1008
#define IDC_PYTHON20 1009
#define IDC_BROWSE 1010
***************
*** 24,27 ****
--- 25,29 ----
#define IDC_BUILD_INFO 1024
#define IDC_BITMAP 1025
+ #define IDC_OTHERPYTHON 1026
// Next default values for new objects
***************
*** 31,35 ****
#define _APS_NEXT_RESOURCE_VALUE 112
#define _APS_NEXT_COMMAND_VALUE 40001
! #define _APS_NEXT_CONTROL_VALUE 1026
#define _APS_NEXT_SYMED_VALUE 101
#endif
--- 33,37 ----
#define _APS_NEXT_RESOURCE_VALUE 112
#define _APS_NEXT_COMMAND_VALUE 40001
! #define _APS_NEXT_CONTROL_VALUE 1027
#define _APS_NEXT_SYMED_VALUE 101
#endif
Index: wininst.dsp
===================================================================
RCS file: /cvsroot/python/distutils/misc/wininst.dsp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** wininst.dsp 2000年09月07日 07:36:41 1.3
--- wininst.dsp 2001年10月05日 20:38:11 1.4
***************
*** 54,58 ****
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
! # ADD LINK32 ole32.lib zlibstat.lib comctl32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"LIBC" /libpath:"zlib\static32"
# Begin Special Build Tool
SOURCE="$(InputPath)"
--- 54,58 ----
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
! # ADD LINK32 imagehlp.lib comdlg32.lib ole32.lib zlibstat.lib comctl32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"LIBC" /libpath:"zlib\static32"
# Begin Special Build Tool
SOURCE="$(InputPath)"
***************
*** 84,88 ****
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
! # ADD LINK32 ole32.lib zlibstat.lib comctl32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /pdb:none /debug /machine:I386 /nodefaultlib:"LIBC" /out:"./wininst_d.exe" /libpath:"zlib\static32"
!ENDIF
--- 84,88 ----
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
! # ADD LINK32 imagehlp.lib comdlg32.lib ole32.lib zlibstat.lib comctl32.lib kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /pdb:none /debug /machine:I386 /nodefaultlib:"LIBC" /out:"./wininst_d.exe" /libpath:"zlib\static32"
!ENDIF
Index: wininst.exe
===================================================================
RCS file: /cvsroot/python/distutils/misc/wininst.exe,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
Binary files /tmp/cvsrIc0Q6 and /tmp/cvsy5dLK5 differ