I found a reference on the mailing list from a year ago with a similar 
problem: I was trying to distribute a Python 2.7 app that used a library 
with a newer Microsoft.VC90.CRT DLL than python was compiled with -- the 
other package required the MSVC 2008 SP1 library. Pyinstaller 2.1 created a 
bundle, but attempting to run on other machines results in messages like:

ImportError: DLL load failed: The application has failed to start because 
its side-by-side configuration is incorrect. Please see the application 
event log or use the command-line sxstrace.exe tool for more detail.

Assemblies, SxS, manifests... All this strange stuff, but finally found a 
comment at the bottom of a MSDN page

http://msdn.microsoft.com/en-us/library/aa374182.aspx

that said that DLLs can use application config files telling it to look for 
newer versions of the DLL. Pyinstaller placed the 
Microsoft.VC90.CRT.manifest in the dist directory, using the msvcr*dll 
version 9.0.21022 that Python was compiled with. (Interestingly, it finds 
the assembly for the MSVC 2008 SP1 sxs library, but doesn't include it.)

So, basically you can force an app to look for the latest CRT by including 
some extra config files.

It now works on a target machine that didn't have the MSVC 2008 SP1 by 
doing the following:

1. replacing the contents of Microsoft.VC90.CRT.manifest with the contents 
of the manifest from the MSVC 2008 SP1 SxS install
2. replacing the msvc*90.dll files in the dist directory with the dlls from 
the MSVC 2008 SP1 SxS install
3. changing the .exe.manifest to point to the newest CRT
4. adding a .exe.config file along side the executable
5. adding .dll.2.config file along side the offending dll

The location of the newest dlls and manifest is somewhere in the 
C:/Windows/WinSxS folder; mine was 
amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_08e61857a83bc251.manifest

Maybe this will help somebody... I've included my config files & manifest 
as examples and the pyinstaller log showing that it did find the other 
(newest) assembly but didn't include it in the dist.

Rob

-- 
You received this message because you are subscribed to the Google Groups 
"PyInstaller" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/pyinstaller.
For more options, visit https://groups.google.com/d/optout.

Attachment: gdal111.dll.2.config
Description: Binary data

Attachment: run.exe.manifest
Description: Binary data

Attachment: run.exe.config
Description: Binary data

Reply via email to