重新分发 Visual C++ 文件

注意

你是否想要下载某个 Visual C++ 运行时文件? 请转到最新受支持的 Visual C++ 可再发行程序包下载页面。

可再发行程序包文件和许可

部署应用程序时,还必须部署支持该应用程序所需的文件。 如果其中有任何文件是由 Microsoft 提供的,请检查是否允许你再发行这些文件。 你将在 IDE 中找到指向 Visual Studio 许可条款的链接。 使用“关于 Microsoft Visual Studio”对话框中的“许可条款”链接。 或者,从 Visual Studio 许可证目录下载相关的 EULA 和许可证。

若要查看“Visual Studio 2022 Microsoft 软件许可条款”的“可分发代码”部分中引用的“REDIST 列表”,请参阅 Microsoft Visual Studio 2022 的可分发代码文件

若要查看“Visual Studio 2019 Microsoft 软件许可条款”的“可分发代码”部分中引用的“REDIST 列表”,请参阅 Microsoft Visual Studio 2019 的可分发代码文件

若要查看“Visual Studio 2017 Microsoft 软件许可条款”的“可分发代码”部分中引用的“REDIST 列表”,请参阅 Microsoft Visual Studio 2017 的可分发代码文件

若要查看“Visual Studio 2015 Microsoft 软件许可条款”的“可分发代码”部分中引用的“REDIST 列表”,请参阅 Microsoft Visual Studio 2015 的可分发代码文件

有关可再发行文件的详细信息,请参阅确定要重新分发的 Dll部署示例

找到可再发行文件

若要部署可再发行文件,可以使用 Visual Studio 安装的可再发行程序包。 在自 2017 年以来的 Visual Studio 版本中,这些文件称为 vc_redist.arm64.exevc_redist.x64.exevc_redist.x86.exe。 在 Visual Studio 2015、2017 和 2019 中,它们也称为 vcredist_x86.exevcredist_x64.exe 和(仅限 2015)vcredist_arm.exe

查找可再发行文件的最简单方法是使用在开发人员命令提示符中设置的环境变量。 在 Visual Studio 2022 中,可再发行文件位于 %VCINSTALLDIR%Redist\MSVC\v143 文件夹中。 在最新版本的 Visual Studio 2019 中,你将在 %VCINSTALLDIR%Redist\MSVC\v142 文件夹中找到可再发行文件。 在 Visual Studio 2017 和 Visual Studio 2019 中,它们也位于 %VCToolsRedistDir% 中。 在 Visual Studio 2015 中,这些文件位于 %VCINSTALLDIR%redist\<locale> 中,其中 <locale> 是可再发行程序包的区域设置。

在 Visual Studio 2022 和 2019 中,合并模块文件是 Visual Studio 安装程序中名为 C++ <版本> 可再发行程序包 MSM 的可选可安装组件的一部分。 合并模块默认在 Visual Studio 2017 和 Visual Studio 2015 中的 C++ 安装过程中安装。 在 Visual Studio 2022 中安装时,你将在 %VCINSTALLDIR%Redist\MSVC\v143\MergeModules 中找到可再发行程序包合并模块。 在最新版本的 Visual Studio 2019 中,可再发行程序包合并模块位于 %VCINSTALLDIR%Redist\MSVC\v142\MergeModules 中。 在 Visual Studio 2019 和 Visual Studio 2017 中,它们也位于 %VCToolsRedistDir%MergeModules 中。 在 Visual Studio 2015 中,它们位于 Program Files [(x86)]\Common Files\Merge Modules 中。

安装可再发行程序包

Visual C++ Redistributable Package 将安装并注册所有 Visual C++ 库。 如果使用,请在安装应用程序之前,在目标系统上将其作为先决条件运行。 我们建议你在部署中使用这些包,因为它们能够启用 Visual C++ 库的自动更新。 有关如何使用这些包的示例,请参阅演练:使用 Visual C++ 可再发行组件包部署 Visual C++ 应用程序

每个 Visual C++ 可再发行程序包都会检查计算机上是否存在较新版本。 如果找到较新版本,则不会安装该包。 在 Visual Studio 2015 或更高版本中,可再发行程序包会显示一个指示安装失败的错误消息。 如果使用 /quiet 标志运行包,则不会显示错误消息。 在任一情况下,Microsoft 安装程序都会记录错误,并且会将错误结果返回给调用方。 在 Visual Studio 2015 和更高版本中,可以检查注册表是否安装了更新的版本,从而避免出现此错误。 当前安装的版本号存储在 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\{x86|x64|arm64} 项中。 对于 Visual Studio 2015、2017、2019 和 2022,版本号为 14.0,因为最新的可再发行程序包与 2015 版之前的版本是二进制兼容的。 该项为 arm64x86x64,具体取决于平台已安装的 vcredist 版本。 (仅当使用 Regedit 查看 x64 平台上已安装的 x86 包的版本时,才需要在 Wow6432Node 子项下检查。)版本号存储在 REG_SZ 字符串值 Version 中,也存储在 MajorMinorBldRbldREG_DWORD 值的集中。 为了避免在安装时出错,如果当前安装的版本较新,必须跳过可再发行程序包的安装。

可再发行包的命令行选项

Visual C++ 可再发行程序包支持多个命令行选项。 /?/h/help 选项会显示一个弹出对话框,其中列出了可用选项。 可以指定 /install 安装、指定 /repair 修复,或指定 /uninstall 卸载可再发行组件。 /layout 选项将可再发行组件的完整内容复制到当前目录中。 默认情况下,可再发行组件会安装其内容并提示用户输入信息以及是否在安装后重新启动。 可以指定 /passive 选项,该选项将显示进度,但不需要用户交互。 还可以指定 /quiet 选项,该选项不显示任何 UI,也不需要任何用户交互。 /norestart 选项会禁止任何重新启动的尝试。 默认情况下,会在 %TEMP% 中创建一个日志文件。 可以使用 /log filename.txt 记录到特定文件。

此示例命令将安装 x64 可再发行组件。 它显示安装进度,但不需要用户交互,也不需要重启:

vc_redist.x64.exe /install /passive /norestart

安装可再发行的合并模块

重要

Visual C++ 可再发行程序包文件的合并模块(.msm 文件)已弃用。 不建议将它们用于应用程序部署。 相反,我们建议集中部署 Visual C++ 可再发行程序包。 可再发行程序包的集中部署使 Microsoft 可以独立地为运行时库文件提供服务。 并且,卸载应用不能影响其他同样使用集中部署的应用程序。 你在使用可再发行程序包进行集中部署时,无需负责跟踪和维护运行时库。 否则,对运行时库文件的更新需要更新和重新部署 .msi 安装程序。 在这样做之前,你的应用可能容易受到 bug 或安全问题的影响。

可再发行程序包合并模块必须包含在用于部署应用程序的 Windows Installer 包(或类似的安装包)中。 有关详细信息,请参阅使用合并模块重新分发。 有关示例,请参阅演练:使用安装项目部署 Visual C++ 应用程序

安装单个可再发行程序包文件

还可以直接在应用程序本地文件夹中安装可再发行程序包 DLL。 应用程序本地文件夹是包含可执行应用程序文件的那个文件夹。 出于维护原因,不建议使用此安装位置。

可能的运行时错误

如果 Windows 无法找到应用程序所需的某个可再发行程序包库 DLL,可能会显示类似这样的消息:“因为找不到 library.dll,此应用程序未能启动。 重新安装应用程序可能会修复此问题。”

若要解决这种错误,请确保你的应用程序安装程序正确生成。 验证可再发行程序包库是否已在目标系统上正确部署。 有关详细信息,请参阅了解 Visual C++ 应用程序的依赖项

使用合并模块重新分发
介绍如何使用 Visual C++ 可再发行程序包合并模块将 Visual C++ 运行库作为共享 DLL 安装到 %windir%\system32\ 文件夹中。

重新分发 Visual C++ ActiveX 控件
描述如何重新发布使用 ActiveX 控件的应用程序。

重新分发 MFC 库
描述如何重新发布使用 MFC 的应用程序。

重新分发 ATL 应用程序
描述如何重新发布使用 ATL 的应用程序。 在 Visual Studio 2012 及更高版本中,不需要 ATL 库。

部署示例
指向演示如何部署 Visual C++ 应用程序的示例的链接。

部署桌面应用程序
介绍 Visual C++ 部署概念和技术。