重新发布 Visual C++ 文件

更新:2007 年 11 月

当使用 Visual C++ 开发应用程序时,会具有这样的优势:您工作所用的计算机不仅是良好的开发环境,而且也是运行和测试应用程序的方便环境。但是,当您希望将应用程序部署到其他计算机上时,必须重新发布在目标系统上支持该应用程序所需要的所有文件。有关可能需要与您的应用程序一起重新发布哪些文件的更多信息,请参见部署示例确定要重新发布的 DLL

仅有某些 Visual C++ 文件可以与您的应用程序一起重新发布。请查看 Visual Studio 2005 的 Microsoft 软件许可协议条款和 Redist.txt 文件,以了解可以与应用程序一起重新发布哪些文件。EULA.txt 在第一张 Visual C++ 2008 产品 CD 或 DVD 上的 \Setup 目录中,而 Redist.txt 位于第二张 CD 或 DVD 上的 Program Files\Microsoft Visual Studio 2005 目录中。

可以通过以下方法重新发布 Visual C++ 文件:使用提供的可再发行合并模块或 Visual C++ 可再发行组件包,或者通过将特定 Visual C++ 程序集部署为应用程序本地文件夹中的私有并行程序集。

说明:

应用程序本地文件夹是包含应用程序可执行文件的文件夹。必须在应用程序本地文件夹或其中一个子文件夹中部署私有并行程序集。有关适用于含有私有并行程序集的子文件夹的命名规则的更多信息,请参见程序集搜索顺序

在第一种情况下,具有特定 Visual C++ 程序集的合并模块必须包含在一个 Windows Installer 程序包中或用于将此应用程序部署到其他计算机的类似安装软件包中。有关更多信息,请参见使用合并模块重新发布。有关此部署的示例可参见如何:部署“安装和部署项目”

在目标系统上必须执行 Visual C++ 可再发行组件包(VCRedist_x86.exe、VCRedist_x64.exe、VCRedist_ia64.exe),作为安装应用程序的必备条件。此组件包安装和注册所有 Visual C++ 库。

说明:

对于用 Visual C++ 速成版生成的应用程序以及需要同时部署所有 Visual C++ 库的情况,建议使用此组件包重新发布 Visual C++ 库。

有关如何使用此组件包的示例,请参见如何:使用 XCopy 进行部署

将 Visual C++ 库部署为私有并行程序集时,构成此程序集的所有 DLL 和清单文件都必须添加到 Windows Installer 或类似的安装软件包中。这些文件必须按照部署私有程序集的规则,部署到目标计算机上应用程序本地文件夹中的子目录中。可在Visual C++ Libraries as Shared Side-by-Side Assemblies中找到有关哪些 Visual C++ DLL 和清单文件是哪些 Visual C++ 程序集一部分的信息。部署要在运行时加载的私有程序集时,必须遵守某些规则,可在程序集搜索顺序中找到有关这些规则的说明。有关如何将 Visual C++ 库部署为私有程序集的示例,请参见如何:使用 XCopy 进行部署

可能的运行时错误

如果在应用程序有清单,但所需 Visual C++ 库没有安装在 WinSxS 文件夹中,则可能收到以下错误消息之一,具体取决于应用程序所运行于的 Windows 版本:

  • 应用程序正常初始化(0xc0000135)失败。

  • 由于应用程序配置不正确,未能启动此应用程序。重新安装该应用程序可能修复此问题。

  • 系统无法执行指定的程序。

如果应用程序中没有清单,则收到的错误消息取决于应用程序所依赖的 Visual C++ 库的部署位置:是部署到应用程序本地文件夹,还是部署到像 System 文件夹或 WinSxS 文件夹这样的共享文件夹中。

说明:

不支持重新发布未使用清单生成的 C/C++ 应用程序。如果没有将 C/C++ 应用程序绑定到 Visual C++ 库的清单,C/C++ 应用程序就不能使用 Visual C++ 库。有关更多信息,请参见选择部署方法

如果 Visual C++ 库 DLL(例如 MSVCR90.DLL)可以访问(安装在应用程序本地文件夹或 System 文件夹中),则您可能收到以下错误消息:

R6034 某个应用程序尝试以不正确的方式加载 C 运行库。

如果 DLL 不可访问,Windows 无法为应用程序加载此 DLL,则可能收到以下错误消息:

没有找到 MSVCR90.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。

若要更正这些错误,必须确保正确生成应用程序,并且将 Visual C++ 库正确部署到目标系统中。若要找出这些运行时错误的根原,请按照C/C++ 独立应用程序和并行程序集疑难解答中列出的步骤进行操作。

本节内容

请参见

概念

部署示例

C/C++ 独立应用程序和并行程序集疑难解答

其他资源

部署 (C++)