-
Notifications
You must be signed in to change notification settings - Fork 697
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Can't find MSVC*80.DLL in SxS #3
Comments
Yeah the If it's not too sensitive, can you ran the following commands on your binary ? It might help me troubleshoot the issue :
( |
|
Thanks, but the issue lies in the fact that I have no test case to reproduce the bug ... |
You could just install Python 2.7 and cffi (via |
This is not the same. |
That's not true in my case. Python 2.7.15 installed the vcredist package (so msvcr90.dll ends in the winsxs folder). Maybe this depends on the ALLUSERS property. Update There are two differenct CRT versions in the installer: https://github.com/python/cpython/blob/2.7/Tools/msi/msi.py#L858. The default "SharedCRT" vcredist package (bundled as msm module) is installed when the installer is run with a privileged user and ALLUSERS property is set. |
Hi, your program will resolve wrong msvcr80.dll. Steps to reproduce:
Now what happens.
Best regards,
extern "C" int puts(char const*);
int main()
{
puts("test msvcr80.dll\n");
}
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level='asInvoker' uiAccess='false' />
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.41204.256" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
|
@MarekKnapek : thank you for this unit test, this is really helpful. From what I gather, I need to match the "version" more precisely :
But it is not sufficient in your case since vc8.crt manifest has an unknown <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32-policy" name="policy.8.0.Microsoft.VC80.CRT" version="8.0.50727.9659" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"/>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"/>
<bindingRedirect oldVersion="8.0.41204.256-8.0.50608.0" newVersion="8.0.50727.9659"/>
<bindingRedirect oldVersion="8.0.50727.42-8.0.50727.9659" newVersion="8.0.50727.9659"/>
</dependentAssembly>
</dependency>
</assembly> (Oh man SxS is such an headache ...) NB : you're right about Dependency Walker rely on undocumented APIs and the ActivationContext to return the correct path. |
commit 9a4598a partially fix this issue |
Hi @lucasg, yes SxS is crazy. I believe you need to match only first two most significant version numbers (such as But in case you match all four version digits exactly, it should take precedence (maybe?). I don't understand your comment about unknown I also don't understand your comment about There is another issue with "default" manifests, such as |
I have an assembly depending on MSVCRT 8.0 from Visual Studio 2005 ! This tool (v 1.5) cannot find it although it is located in C:\Windows\WinSxS\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.9185_none_d0905a48442809b8
The text was updated successfully, but these errors were encountered: