There are three main ways to depend on and deploy the Visual C++ libraries and the Universal CRT:
- You can depend on the Visual C++ libraries and Universal CRT DLLs and deploy those DLLs centrally using the redistributables (the VCRedist, MSMs, and MSUs)
- You can depend on the Visual C++ libraries and Universal CRT DLLs and package those DLLs “app-locally” (i.e., in the folder alongside your program)
- You can statically link the Visual C++ libraries and Universal CRT, and not have to deploy or package any DLLs.
From a performance and maintainability standpoint, depending on the libraries DLLs and centrally deploying them is the preferable option: the centrally deployed DLLs can be “shared” by all of the programs that depend on them (reducing both disk space use and memory usage on end user machines) and they can be serviced by us (Microsoft) in the event of a security issue.
However, we recognize that central deployment of the DLLs is not always a viable option. And rest assured: we are not planning on removing the option of app-local deployment (we got the message loud and clear last year that app-local deployment is very important to many of you). Some reasons that app-local packaging may be preferred include “xcopy deployable” applications, where there is no installer required; and applications that need to be installable without administrator privileges.
We would like to better understand the reasons that people choose to package the Visual C++ libraries and Universal CRT app-locally. If you rely on app-local packaging, we’d very much appreciate it if you’d fill out the following survey.