Thanks. I think I have realized why it fails on Windows 2000. Judging from your log, the MS VC 90 CRT assembly and its files are correctly bundled by PyInstaller. But there is a caveat: PyInstaller puts the assembly files in a subfolder. On systems like Windows XP and newer, which have WinSxS, this is no problem and the WinSxS loader finds the files through the embedded manifests. And here Windows 2000 fails, because it knows nothing about manifests or WinSxS. It expects the msvc*90.dll either in a directory on the %PATH%, or next to the objects (in this case python26.dll and any *.pyd files) that depend on it. So a quick work-around should be not putting assembly files inside a subfolder when bundling. I have attached a patch for the current trunk, please let me know if it works.

Am 21.07.2010 09:31, schrieb Krzysztof Jakubczyk:
W dniu 2010-07-16 12:29, Florian Höch pisze:
Am 16.07.2010 11:27, schrieb Krzysztof Jakubczyk:
Ok, it seems that folder Microsoft.VC90.CRT exists and dll is present
there. Maybe this folder isn't added by pyInstaller to path ?

Hmm, ok. Actually it should see that folder and use it. Can I see the
output of Build.py?

Sorry for the delay, output is in attached log.txt.


--
Florian Höch

--
You received this message because you are subscribed to the Google Groups 
"PyInstaller" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/pyinstaller?hl=en.

Index: bindepend.py
===================================================================
--- bindepend.py        (revision 853)
+++ bindepend.py        (working copy)
@@ -110,6 +110,7 @@
     'URLMON.DLL':1,
     'MSIMG32.DLL':1,
     'MPR.DLL':1,
+    'DNSAPI.DLL':1,
     # regex excludes
     # don't include in the bundle the libc and the tls stuff
     r'^/usr/lib/tls':1,
@@ -502,12 +503,7 @@
                     nm = assembly.name + fext
                 else:
                     nm = os.path.basename(fn)
-                if nm.lower() == (assembly.name + ".dll").lower():
-                    # If single DLL assembly with embedded manifest, do not 
-                    # create a subfolder
-                    ftocnm = nm
-                else:
-                    ftocnm = os.path.join(assembly.name, nm)
+                ftocnm = nm
                 if assembly.language not in (None, "", "*", "neutral"):
                     ftocnm = os.path.join(assembly.getlanguage(), 
                                           ftocnm)
Index: winmanifest.py
===================================================================
--- winmanifest.py      (revision 852)
+++ winmanifest.py      (working copy)
@@ -478,7 +478,7 @@
                 if language in (LANGUAGE_NEUTRAL_NT5, 
                                 LANGUAGE_NEUTRAL_NT6):
                     for ext in (".dll", ".manifest"):
-                        paths.extend(glob(os.path.join(dirnm, self.name)))
+                        paths.extend(glob(os.path.join(dirnm, self.name + 
ext)))
                         paths.extend(glob(os.path.join(dirnm, self.name, 
                                                        self.name + ext)))
                 else:

Reply via email to