The download for PyInstaller 2.0 seems to include binaries that were created with Visual Studio 2010.
This means that the PE Header value in run*.exe/*.dll specifies a minimum subsystem version of 5.01.
Windows 2000 only supports 5.00 or less.
I have VS 2008, VS 2010, and VS2012 installed and I did the following:
* waf configure
* waf build
The configure output found VS 2008 and VS 2010 CLs, but only listed VS 2008 LINK/LIB, and the build used the VS 2008 CL and LINK.
It seems like the wscript should prevent VS 2010 from being used for all Python 2.x versions PyInstaller supports.
The output of the build produced a .exe/.dll (as shown by dumpbin /headers) that has subsystem set to 5.00:
5.00 operating system version
0.00 image version
5.00 subsystem version
However, that wasn't the end of the saga.
When I ran the .exe on Windows 2000 I got an error dialog claiming it couldn't load the MSVC9 CRT DLL while run.exe was trying to LoadLibraryEx python27.dll.
The source of the problem seems to be wierdness with the ALTERNATE SEARCH flag to LoadLibraryEx()
Changing the working directory to the extractionpath before the LoadLibraryEx call seems to work and falling back to the one-dir approach if that isn't possible.
This hack seems like a deal breaker to some PyInstaller utilizing apps that want to run on Win2k though.
Changing the current working directory is a pretty big hammer. :(
The .exe works just fine on Win7/Win2k8R2 so this is just a Win2k lameness as far as I know.
Now that I think some more about it, I suppose one lame idea would be to copy the PyInstaller .exe (or just the appropriate run*.exe equivalent if that's possible) into extraction path and launch the child instance from there.
Bleh. I don't supose anybody else might have another idea that might be suitable to write a patch against the development branch?
Thanks,
Bill