Visual C++ Libraries DLL Deployment

There have been lots of questions and concerns about deploying VC++ 2005 applications and what are the possible ways of deploying the VC++ Libraries.

Thanks to Sridhar Madhugiri on the VC++ Libraries team, here is a quick dump that can help in the deployment process.

Following discusses the deployment options available to deploy VC Libraries DLLs with a product. Online docs will be updated to incorporate this information.

 

Most of the information below is documented but spread across various topics.

 

General information: http://msdn2.microsoft.com/ms235316(en-US,VS.80).aspx Talks about some of the pros/cons of the options.

Servicing Concerns :

Irrespective of which option you use, any serious security issue will be deployed through Microsoft Update as a security update. You don’t have to release a patch to your product to deploy the fixed VC Libs DLLs.

Deployment Options :

1. Install to Winsxs Directory using MSMs merged into app setup.

2. Private Assembly install under app directory.

3. Install to Winsxs Directory using vcredist*.exe.

1. Install to Winsxs Directory using MSMs merged into app setup.

Merge Modules that install the DLLs to WinSXS can be found under Program Files\Common Files\Merge Modules. These MSMs can be merged into the app setup. Various Setup authoring tools are available and allow merging MSMs. Please refer to the Authoring tool documentation to determine how to merge the MSMs. Merge the required MSMs into the app setup.

Pros : Only deploy the assemblies that the app depends on.

Cons : App has to have its own setup, requires admin rights to install

ATL

X86 - Microsoft_VC80_ATL_x86.msm, policy_8_0_Microsoft_VC80_ATL_x86.msm

IA64 - Microsoft_VC80_ATL_x86_ia64.msm, policy_8_0_Microsoft_VC80_ATL_x86_ia64.msm

X64 - Microsoft_VC80_ATL_x86_x64.msm,policy_8_0_Microsoft_VC80_ATL_x86_x64.msm

CRT

X86 - Microsoft_VC80_CRT_x86.msm, policy_8_0_Microsoft_VC80_CRT_x86.msm

IA64 - Microsoft_VC80_CRT_x86_ia64.msm, policy_8_0_Microsoft_VC80_CRT_x86_ia64.msm

X64 - Microsoft_VC80_CRT_x86_x64.msm, policy_8_0_Microsoft_VC80_CRT_x86_x64.msm

MFC

X86 - Microsoft_VC80_MFC_x86.msm, policy_8_0_Microsoft_VC80_MFC_x86.msm

IA64 - Microsoft_VC80_MFC_x86_ia64.msm, policy_8_0_Microsoft_VC80_MFC_x86_ia64.msm

X64 - Microsoft_VC80_MFC_x86_x64.msm, policy_8_0_Microsoft_VC80_MFC_x86_x64.msm

OpenMP

X86 - Microsoft_VC80_OpenMP_x86.msm, policy_8_0_Microsoft_VC80_OpenMP_x86.msm

IA64 - Microsoft_VC80_OpenMP_x86_ia64.msm, policy_8_0_Microsoft_VC80_OpenMP_x86_ia64.msm

X64 - Microsoft_VC80_OpenMP_x86_x64.msm, policy_8_0_Microsoft_VC80_OpenMP_x86_x64.msm

MFCLOC

X86 - Microsoft_VC80_MFCLOC_x86.msm, policy_8_0_Microsoft_VC80_MFCLOC_x86.msm

IA64 - Microsoft_VC80_MFCLOC_x86_ia64.msm, policy_8_0_Microsoft_VC80_MFCLOC_x86_ia64.msm

X64 - Microsoft_VC80_MFCLOC_x86_x64.msm, policy_8_0_Microsoft_VC80_MFCLOC_x86_x64.msm

Debug DLLs cannot be redistributed. They are shipped with VC for debugging purposes. See Online VC Documentation for details

DebugCRT

X86 - Microsoft_VC80_DebugCRT_x86.msm, policy_8_0_Microsoft_VC80_DebugCRT_x86.msm

IA64 - Microsoft_VC80_DebugCRT_x86_ia64.msm, policy_8_0_Microsoft_VC80_DebugCRT_x86_ia64.msm

X64 - Microsoft_VC80_DebugCRT_x86_x64.msm, policy_8_0_Microsoft_VC80_DebugCRT_x86_x64.msm

DebugMFC

X86 - Microsoft_VC80_DebugMFC_x86.msm, policy_8_0_Microsoft_VC80_DebugMFC_x86.msm

IA64 - Microsoft_VC80_DebugMFC_x86_ia64.msm, policy_8_0_Microsoft_VC80_DebugMFC_x86_ia64.msm

X64 - Microsoft_VC80_DebugMFC_x86_x64.msm, policy_8_0_Microsoft_VC80_DebugMFC_x86_x64.msm

DebugOpenMP

X86 - Microsoft_VC80_DebugOpenMP_x86.msm, policy_8_0_Microsoft_VC80_DebugOpenMP_x86.msm

IA64 - Microsoft_VC80_DebugOpenMP_x86_ia64.msm, policy_8_0_Microsoft_VC80_DebugOpenMP_x86_ia64.msm

X64 - Microsoft_VC80_DebugOpenMP_x86_x64.msm, policy_8_0_Microsoft_VC80_DebugOpenMP_x86_x64.msm

http://msdn2.microsoft.com/ms235290(en-US,VS.80).aspx

2. Private Assembly install under app directory.

The VC Libs files can be installed under the app directory as a private assembly. The files required for the private assembly are under <VS install path>\vc\redist. Copy the required sub directories to the app directory.

Pros : App does not have a setup, xcopy deploy, Non admin install, Select the assemblies that the app uses, run from share

Cons : Not suitable when a product installs multiple binaries and these are installed in various directories (assembly has to be duplicated under each directory)

http://msdn2.microsoft.com/ms235291(en-US,VS.80).aspx

3. Install to Winsxs Directory using vcredist*.exe.

vcredist*.exe found under <VS install path>\sdk. These are standalone exe that installs all the VC libs to WinSXS directory. It installs only the retail versions of the DLLs.

http://msdn2.microsoft.com/ms235291(en-US,VS.80).aspx

Pros : App does not require a Setup, Has to be installed on the machine once and multiple apps can use the central version.

Cons : Installs all the VC Libs DLLs irrespective of whether they are used by the app, requires admin rights to install

Thanks,

Ayman Shoukry

Program Manager

VC++ Team