问题
Visual C++ 2005 I build on my system use CRT DLLs version 8.0.50727.4053. I believe it is the latest one and was automatically updated by Windows.
On user systems, this version of the DLL is not found. I have used vcredist_x86.exe in the past as a part of our installer to install runtime DLLs. It used to work.
My problem is that even the latest version of vcredist_x86.exe ( Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)) doesn't install this version of the DLL.
So which vcredist_x86.exe file do I need then ?
P.S. Would forcing my app to link to a specific version of the CRT solve the problem ? Is it a prefered method at all ?
Thanks,
Paul
UPDATE: There are other people who observe that vcredist_x86.exe ( Microsoft Visual C++ 2005 SP1 Redistributable Package (x86)) doesn't install 8.0.50727.4053.
UPDATE2: At least one person suggests forcing using the previous version of CRT (http://tedwvc.wordpress.com/). This would however add a significant complexity to our projects.
回答1:
Following the advice of JesperE, I found that there exists "Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package ATL Security Update" which provides these distributables.
回答2:
I think there's an important distinction for VS standard/professional users and VS Express users. For VC++ Standard, c:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86\ contains the 8.0.50727.4053 redistributable (after the security update is installed). There is no need to separately install an SDK, so (for instance), I don't even have a C:\Program Files\Microsoft SDKs\ directory on the machine with VC++ Standard installed.
When using VS 2005 Express, follow mikets' answer, and get the ATL security update version. I confirmed these fix the problem in my case.
回答3:
Ok. I found the solution in an MS Forum:
If you installed the security update, the 9.0.30729.4148 version of vcredist should be in your Windows SDK folder, typically C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\vcredist_x86 and C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\vcredist_x64.
Original thread
回答4:
Microsoft release an update (google for KB971090) containing a security fix for the VC runtime. There is a corresponding update to the vcredist_x86.exe
, but I don't have a link. If you have KB971090 installed, I think you should have an updated vcredist_x86.exe
somewhere on your machine.
In practise (IIRC), it means that binaries built on machines which has KB971090 installed can only run on machines which have the corresponding updated VC runtimes, i.e. you need to ship and install the new vcredist_x86.exe
on client machines.
回答5:
I hope this could be a useful information:
The file you're looking for (2.0.50727.4053) has a size of 2.705.744 bytes (2.707.456 bytes on disk).
回答6:
My understanding is that Microsoft hasn't released a vcredist_x86.exe for this version. They did, however, release Merge Modules with this version, so you should download them and include them in your installer. Now where do you get these is also a good question, but I somehow magically got them, probably through InstallShield update.
回答7:
On my machine I found the 8.0.50727.4053 redistributable in \Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packages\vcredist_x86
The one in \Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\vcredist_x86
was for VS2008.
-Greg
回答8:
Note: Installing the "Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package ATL Security Update" mentioned by mikets above also may resolve the following problem:
Error 0xc0150004 upon starting devenv.exe (Visual Studio 2005) or reader_sl.exe (Autostart of Acrobat Reader).
Reason it fixes a corrupt installation of the above Assemblies. (Probably corrupted with an Windows update/service pack installation).
回答9:
It looks like you can install a msm file directrly with the msiexec see: http://forums.winamp.com/showthread.php?s=&threadid=99668&highlight=msm
来源:https://stackoverflow.com/questions/1582844/vcredist-x86-dll-and-version-8-0-50727-4053