This blog is about developing Windows applications using Visual Studio. All postings on this weblog are provided "AS IS" with no warranties, and confer no rights. Use of any samples are subject to the terms specified at http://www.microsoft.com/info/cpyright.htm
Your host Nikola Dudar is a Program Manager in Windows division of Microsoft Corporation. He has been working on Windows Web Services API during Windows 7 and various additions to Visual C++ during VS2005 and VS2008. More details are in LinkedIn profile under Nikola's formal name Mykola Dudar.
If you are interested in program management and project management, check out my other blog at http://www.pmsnack.com/ where I collect best practices and other topics interesting to program and project managers.
To send feedback, comments or requests for new posts, please use the contact form.
VCRedist.exe can now be downloaded from the Microsoft site. This package contains VS2005 RTM versions of all VC libraries – OpenMP, MFC, ATL, CRT, MSDIA. It installs and registers all them. Side-by-side assemblies such as MFC, CRT, MFC LOC and ATL are installed into a shared location (%SYSTEMROOT%\WinSxS). The package can be used by VC developers for redistributing VC++ libraries with their applications.
This package is the easiest way to get an application built with VC++ Express to run on a computer that does not have VC++ 2005 Express installed. However, remember that VCRedist installs all VC redistributable libraries. If, for example, your app depends only on CRT, you may just package CRT MSMs with install for your application or use unrolled CRT assembly from \vc\redist folder per described in http://msdn2.microsoft.com/en-us/library/ms235299(VS.80).aspx. In this way your installation package is smaller in size and you are not wasting space on target computers by deploying all VC libs with vcredist.exe, not just ones used by your application.
Below you may find links from where one can download the package.
X64 - http://www.microsoft.com/downloads/details.aspx?FamilyId=90548130-4468-4BBC-9673-D6ACABD5D13B&displaylang=es
There are two patches for this issues:
a) The patch to VS2005, KB#911884. It installs "new" fixed VC DLLs, Libs, headers/sources, MSMs on a computer that has VS2005 installed. Basically any developers can install this patch on his/her build machine. You may install it on any computer that has VS2005 installed.
b) The patch to vcredist_*.exe. This one installs "new" fixed VC DLLs on a computer that has installation of VCRedist_*.EXE. You do not need to install it on your computer. But if your product installs VCRedist_*.EXE on end-users' computersto redistribute VC DLLs to end-user's computers, you need to install the patch also. The patch to vcredist_*.exe available throught the KB articles listed below:
KB919588 for x86
Kb920854 for x64
Kb920855 for ia64
This patch has a prerequisite - RTM version VCRedist_*.exe. It can only be installed on a computer that has RTM version of VCRedist.exe already installed. It RTM version is not installed, an error message will be shown by OS MSI installer.
To summary, you need to install KB911884 on your computer where you build your app. If you redistribute VC libraries using MSMs, just build your product, merge VC MSMs with your setup, and you are all ready to install your product on end-users' computers. If you do not use MSMs and use VCRedist_*.exe to redistribute VC DLLs, then make sure RTM version of VCRedist_*.exe is installed on your end-user's computers first, then install KB919588 and only after that continue with installing your product.
Hope this helps. There are several discussions of this issue on forums. You may find some answers there too. See http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=29&SiteID=1
The article mentions "VS 2005 Express". What of "VS 2005 Standard Edition"?
I am not sure what exactly you are asking about. VCRedist*.exe installs all VC++ libraries as shared side-by-side assemblies into WinSxS cache. If you have built your application with either VC++ Express or Visual Studio Standard, Professional or Team System, you are able to run the application on a computer that does not have Visual Studio after you install VCRedist*.exe. However redistributing VC++ libraries using VCRedist*.exe is not the primary recommendation. Using Merge Modules and Setup Projects available in Visual Studio 2005 is a better solution in many scenarios from both technical and bussiness standpoint. More information on how to choose a way for redistributing Visual C++ libraries is documented in this topic, http://msdn2.microsoft.com/en-us/library/ms235316(VS.80).aspx
The KB 911884 you mention in the text below couldn't be found!!
I am currently packaging my application with MSMs for the CRT and they show up as Beta 2. I have the Team Edition of Visual Studio 2005 installed.
Could you please tell me where i can find the KB 911884?
You need to contact developer support using ways mentioned on http://support.microsoft.com/ and request this hotfix. KB#911884 or #919280 or related ones depending on what chip architecture your need.
I would ask you if there is a new Microsoft Visual C++ 2005 Redistributable Package for the SP1?
At this point there are no plans to post a download of SP1 version of the VCRedist. However once you install VS2005 SP1, it updates vcredist_*.exe bootstrapper package on hard drive with a new version that contains SP1 version of VC++ Dlls. You can use that copy to redistribute VC libs for applications built with SP1.
Express users do not get vcredist_*.exe bootstrapper packages. Yes, they get the MSMs - but that's a puzzling choice since Express excludes the ability to create installation kits with which to merge them. It's not clear what Express developers are supposed to do with the MSMs.
SP1 presents some sticky problems for folks who develop with the Express Edition because there is no apparent way to install the new VC libs on a system (other than the development system, where it is installed by the SP1 upgrade itself).
Hopefully Microsoft will reconsider posting a download of SP1 version of the VCRedist.exe which Express developers can point to as a prerequisite for running their apps.
Yes, the situation with MSMs in VCExpress is quite unfortunate. I have had a long discussion about that before VS2005 shipped, however it was decided not to change layout of VCExpress. Primarily because it was an expensive change and resources we occupied with other tasks. Same time I had created and posted a workaround for VCExpress users (http://blogs.msdn.com/nikolad/archive/2005/09/02/460368.aspx) and I worked with VS release team on creating a web download of VCRedist.
In Orcas, release team is reviewing a list of components in VC Express and re-defining what is in there. I actually argue for including vc\redist folder that enables xcopy deployment of applications built with VCExpress on another computers. There are voices in support of adding vcredist*.exe into VC Express install. I am not sure about that, but perhaps this may ended-up as the final solution. Close to Beta1 release of Orcas, we are going to narrow down the final solution.
As for VS2005 SP1, there is a task on VC release team's schedule to add another download of SP1 version of VCRedist. I am not aware of the current status of this initiative because I am not driving it this time and focusing on Orcas features. As soon as some details are available, it is going to be announced on vcblog and I am going to post a link from my blog.
I am not able to load DLLs built with VS2005 SP1 using the debug configuration on machines even after running the vc redist that came with the SP1 upgrade. Is there something else I need to do so that debug DLLs will load?