选择部署方法

大多数情况下,Visual C++ 应用程序的部署都是用 Windows Installer 部署来完成的。 有关 Visual Studio 内支持的部署方法以及替换方法的更多信息,请参见选择部署策略Deployment Alternatives。 在 Visual Studio 2010 中,不支持 Visual C++ 本机应用程序的 ClickOnce 部署;但是,可以在命令行上通过 ClickOnce 部署 Visual C++ 应用程序。 有关更多信息,请参见 Visual C++ 应用程序的 ClickOnce 部署

Visual C++ 库是共享的 DLL

Visual Studio 2010 将 Visual C++ 库作为共享 DLL 安装在 %windir%\system32 目录中。 为了确保 Visual C++ 应用程序将在未安装 Visual C++ 的计算机上运行,您可能必须与该应用程序一起重新发布 Visual C++ DLL 并确保它们安装在目标计算机上。

重新发布 Visual C++ 库

有三种方法可重新发布 Visual C++ DLL:

  • 我们建议您使用 Visual C++ 可再发行组件包(VCRedist_x86.exeVCRedist_x64.exeVCRedist_ia64.exe)将所有 Visual C++ 库作为共享 DLL 安装在 %windir%\system32 中。 Visual Studio 将此组件包安装在 %WindowsSdkDir%\Bootstrapper\Packages 文件夹中。 也可以从 Microsoft Download Center(Microsoft 下载中心)将其下载。 有关如何使用此组件包的示例,请参见演练:使用 Visual C++ 可再发行组件包部署 Visual C++ 应用程序

  • 使用 Visual C++ 可再发行合并模块将特定的 Visual C++ 库作为共享 DLL 安装在 %windir%\system32 中。 访问此文件夹要求 Installer 应用程序由具有管理员权限的用户来运行。 有关更多信息,请参见使用合并模块重新发布。 有关此部署的示例可参见演练:使用安装项目部署 Visual C++ 应用程序

  • 使用提供的文件将与应用程序位于同一文件夹中的特定 Visual C++ DLL 安装在 Program Files\Microsoft Visual Studio 10.0\VC\Redist 目录中。 允许没有管理员权限的用户安装应用程序或可以通过共享运行应用程序时,建议使用这种方法。

使用可再发行合并模块安装 Visual C++ 库时,DLL 将作为共享 DLL 部署到 %windir%\system32 中。 访问此文件夹要求 Installer 应用程序由具有管理员权限的用户来运行。

如果安装由不具备管理权限的用户运行,则安装将无法部署 Visual C++ DLL,并且应用程序将无法运行。 同样,某些产品可能允许基于每个用户进行安装,但是合并模块会将库安装到共享位置中并影响系统的所有用户。 在这两种情况下以及类似的情况下,支持将所需的 DLL 安装在特定用户的应用程序目录中这一技术。

利用此技术足以将 DLL 复制到应用程序的本地文件夹中。 执行应用程序时,操作系统的加载程序使用 LoadLibraryEx 中所述的搜索顺序。

错误地重新发布 Visual C++ 库可能会导致执行依赖于这些库的应用程序时出现运行时错误。

与静态链接相比优先使用动态链接

不建议重新发布静态链接到 Visual C++ 库的 C/C++ 应用程序。 通常错误地认为,将程序静态地链接到 Visual C++ 库可以显著改善应用程序的性能。 但是,在几乎所有的情况下,动态加载 Visual C++ 库对性能造成的影响并不显著。 而且,静态链接不允许应用程序的作者或 Microsoft 为应用程序及其依赖库提供服务。 例如,假定静态连接到特定库的应用程序在具有此库的新版本的客户端计算机上运行。 应用程序仍可以从该库的以前版本使用代码,但不会受益于库增强功能(如安全增强功能)。 强烈建议 C/C++ 应用程序的作者在决定静态链接到依赖库之前认真考虑维护方案,并尽可能使用动态链接。

请参见

概念

选择部署策略

ClickOnce 安全和部署

部署示例

其他资源

部署 (Visual C++)

Windows Installer Deployment Overview