选择部署方法

建议使用 Windows Installer 进行部署。 Windows Installer 支持安装、修复和卸载,还支持应用程序文件、依赖项和注册表项的原子更新。 除非你的 Visual C++ 应用程序是自包含的并且可使用复制命令部署,否则请使用 Windows Installer。

注意

虽然在 Visual Studio 中可以进行 Visual C++ 本机应用程序的 ClickOnce 部署,但需要额外的步骤。 有关详细信息,请参阅 Visual C++ 应用程序的 ClickOnce 部署

Visual C++ 库是共享的 DLL

由于 Visual C++ 库由 Visual Studio 安装程序安装在 %windir%\system32\ 目录中,所以当你开发依赖这些库的 Visual C++ 应用程序时,它会按预期运行。 但是,大多数计算机未安装 Visual Studio。 若要将应用程序部署到这些计算机,我们建议你确保将这些库与应用程序一起安装。

可再发行的 Visual C++ 库

在你的部署中,可以重新发布获得重新发布许可的任何版本的 Visual C++ 库。 以下是三种部署方法:

  • 使用 Visual C++ 可再发行程序包进行集中部署。 此方法是我们建议使用的方法。 Visual C++ 可再发行程序包是将 Visual C++ 库安装作为共享 DLL 安装在 %windir%\system32\ 中的可执行文件。 (此文件夹中的安装需要管理员权限。)可以在目标计算机上安装应用程序之前创建引导程序、运行可再发行程序包的脚本或安装程序。 可再发行程序包可用于 x86、x64、ARM64 和 ARM 平台。 有关查找包文件的位置的详细信息,请参阅查找可再发行程序包文件。 有关如何使用可再发行程序包的信息,请参阅演练:使用 Visual C++ 可再发行程序包部署 Visual C++ 应用程序

  • 使用合并模块进行集中部署。 此方法已弃用,因为以这种方式部署的库无法通过 Windows 更新自动更新。 可以使用合并模块将特定的 Visual C++ 库作为共享 DLL 安装在 %windir%\system32\ 中。 (安装到此文件夹需要管理员权限。)合并模块将成为应用程序的 .msi 安装程序文件的一部分。 由于这些模块已被弃用,Visual C++ 可再发行程序包合并模块是 Visual Studio 2022 和 2019 中的可选可安装组件。 它们默认安装在 Visual Studio 2017 和 2015 中。 有关详细信息,请参阅在何处查找合并模块文件

  • 本地部署。 在大多数情况下,不建议使用本地部署。 在本地部署中,你要复制 Visual Studio 安装中的特定 Visual C++ DLL(一般位于 \%VCINSTALLDIR%Redist\MSVC\<version>\<target-platform>\ 中),然后将其安装在目标计算机上应用程序可执行文件所在的文件夹中。 可以使用此部署方法启用无管理员权限的用户的安装。 或者,对于可从 U 盘或网络共享运行的应用程序。

如果部署使用可再发行程序包合并模块,则安装应用的用户必须具有管理权限。 否则,无法安装 Visual C++ DLL,应用程序可能也无法运行。 允许按用户安装的应用程序安装程序会将库安装在影响所有系统用户的共享位置中。 可以使用本地部署在特定用户的应用程序目录中安装所需的 Visual C++ DLL。 此方法不会影响其他用户,也不需要管理员权限。 由于这可能会造成可服务性问题,因此不建议本地部署 Visual C++ 可再发行 DLL。

Visual C++ 库的错误部署可能导致执行依赖于这些库的应用程序时出现运行时错误。 操作系统在加载应用程序时,会使用 LoadLibraryEx 中所述的搜索顺序。

动态链接优于静态链接

我们建议你在重新发布 Visual C++ 库时避免使用静态链接。 虽然静态链接几乎从未显著提高应用程序性能,但却几乎总是增加服务的成本。 例如,请考虑静态链接的应用程序,其中包含已使用安全增强功能更新的库。 除非重新编译并重新部署应用程序,否则应用程序无法受益。 因此我们建议你将应用程序动态链接到它们所依赖的库。 这样,无论库部署在何处都可以更新。

另请参阅

部署桌面应用程序
ClickOnce 安全性和部署
部署示例