如何:部署“安装和部署项目”
更新:2007 年 11 月
本主题重点介绍“安装和部署项目”项目类型。有关此部署方案的背景,请参见部署方案示例。
用于部署 Visual C++ 库 DLL 作为共享程序集的过程
创建安装和部署项目
在“文件”菜单上单击“新建项目”,打开“其他项目类型”节点并选择“安装和部署”,然后单击“安装项目”。提供一个名称,然后单击“确定”。
说明: Visual C++ 速成版不支持安装项目。若要重新发布 Visual C++ 库,其中含有在 Visual C++ 速成版中生成的应用程序,请使用 Visual C++ 可再发行组件包。有关更多信息,请参见如何:使用 XCopy 进行部署。
将 EXE 和 DLL 添加到项目中并指定它们应在目标计算机上安装的位置
从“项目”菜单中选择“添加”,并单击“文件”。
找到包含 MyApplication.exe 和 MyLibrary.DLL 的文件夹,然后选择这两个文件。
在“文件系统”窗口中,右击“应用程序文件夹”,指向“添加”,然后单击“创建”以创建一个新文件夹。将其命名为 MyLibrary。
再次单击“应用程序文件夹”,选择 MyLibrary.DLL 并将其拖放到 MyLibrary 文件夹中。在“解决方案资源管理器”中,在您的项目下的“检测依赖项”中,应看到 Visual Studio 检测 MFC90.dll 和 MSVCR90.dll 上的依赖项。您必须为这些 DLL 添加相应的合并模块。
在“项目”菜单上,指向“添加”,然后单击“合并模块”。选择 Microsoft_VC90_CRT_x86.msm 和 Microsoft_VC90_MFC_x86.msm,然后单击“确定”。对于这些合并模块的调试版本,选择 Microsoft_VC90_DebugCRT_x86.msm 和 Microsoft_VC90_DebugMFC_x86.msm。
说明: 验证相应的 policy*.msm 模块是否合并到您的项目。例如,policy_9_0_microsoft_vc90_crt_x86.msm 和 policy_9_0_microsoft_vc90_mfc_x86.msm 分别对应于 Microsoft_VC90_CRT_x86.msm 和 Microsoft_VC90_MFC_x86.msm。Visual Studio 将检测到主模块依赖于这些策略模块,并将它们列在“检测到的依赖项”下方。如果没有自动检测到依赖项,则需要手动合并策略模块。
若要将 64 位应用程序部署到 64 位操作系统,请选择相应平台的合并模块。对于 x64,选择 Microsoft_VC90_CRT_x86_x64.msm 和 Microsoft_VC90_MFC_x86_x64.msm;对于 Itanium,选择 Microsoft_VC90_CRT_x86_ia64.msm 和 Microsoft_VC90_MFC_x86_ia64.msm。
生成 setup.exe
- 在“生成”菜单上单击“生成解决方案”。
运行 setup.exe
- 现在,如果您选择刚生成的 setup.exe,并在支持基于清单将应用程序与其依赖项进行绑定的操作系统(Windows XP Home Edition、Windows XP Professional、Windows Server 2003)上运行,则会产生以下结果:
用于部署 Visual C++ 库 DLL 作为私有程序集的过程
创建安装和部署项目
- 在“文件”菜单上单击“新建项目”,打开“其他项目类型”节点并选择“安装和部署”,然后单击“安装项目”。指定一个名称,然后单击“确定”。
将 EXE 和 DLL 添加到项目中并指定它们应在目标计算机上安装的位置
从“项目”菜单中选择“添加”,并单击“文件”。
找到包含 MyApplication.exe 和 MyLibrary.DLL 的文件夹,然后选择这两个文件。
在“文件系统”窗口中右击“应用程序文件夹”,指向“添加”,然后单击“创建”以创建一个新文件夹。将其命名为 MyLibrary。
再次单击“应用程序文件夹”,选择 MyLibrary.DLL 并将其拖放到 MyLibrary 文件夹中。在“解决方案资源管理器”中,在您的项目下的“检测依赖项”中,应看到 Visual Studio 检测 MFC90.dll 和 MSVCR90.dll 上的依赖项。必须为 \vc\redist 文件夹中的这些程序集添加相应的文件夹。
说明: 对于调试版本,使用 \vc\redist\debug_nonredist。
在 Windows 资源管理器中,打开 %PROGDIR%\Microsoft Visual Studio 8\VC\Redist\x86。
按住 Ctrl 键,单击 Microsoft.VC90.CRT 和 Microsoft.VC90.MFC 文件夹。将这些文件夹拖到 Visual Studio 并将它们拖入“应用程序”文件夹中。
重复步骤 6,但这次将文件夹拖到 MyLibrary 文件夹中。
您可能看到来自 Visual Studio 的消息,指出您正在包含作为合并模块一部分的 DLL。这正是您要执行的操作。因此,单击“否”以指示您不希望对此 DLL 使用 MSM。
仅当使用 MFC/Winforms 集成时,才需要 mfcm90.dll 及其 Unicode 版本 mfcm90u.dll。否则,可从安装中移除这些 DLL。
仅当正在应用程序中使用托管代码时,例如,当用 /clr 或 /clr:pure 生成项目时,才需要 msvcm90.dll。
如果安装项目中包括 mfcm90.dll、mfcm90u.dll 或 msvcm90.dll,则需要安装 .NET Framework。如果目标计算机上未安装 .NET Framework 2.0,则您的安装将无法工作。
对于调试安装,在上一步中将 CRT 更改为 DebugCRT 并将 MFC 更改为 DebugMFC。
对于将 64 位应用程序部署到 64 位操作系统,使用 \vc\redist\amd64 或 \vc\redist\ia64。
生成 setup.exe
- 在“生成”菜单上单击“生成解决方案”。
运行 setup.exe
现在,如果您选择刚生成的 setup.exe,并在支持基于清单绑定的操作系统(Windows XP Home Edition、Windows XP Professional、Windows Server 2003)上运行,则会产生以下结果:
您的应用程序将安装在指定的目标文件夹中。
该应用程序和 DLL 在运行时使用来自 Microsoft.VC90.CRT 和 Microsoft.VC90.MFC 文件夹的 CRT 和 MFC 程序集。
在不支持基于清单绑定的操作系统 (Windows 2000) 上,不建议使用这种部署方法。如果按照先前介绍的步骤尝试将 Visual Studio 程序集作为私有程序集部署到这些操作系统上,则操作系统加载程序将找不到 CRT 和 MFC DLL。必须将包含 Microsoft.VC90.CRT 和 Microsoft.VC90.MFC 的文件夹添加到 PATH 环境变量,加载程序才能找到它们。在此模式下,会出现下列情况:
您的应用程序将安装在指定的目标文件夹中。
系统加载程序将在运行时通过 PATH 环境变量从 Microsoft.VC90.CRT 和 Microsoft.VC90.MFC 文件夹解析 CRT 和 MFC 私有程序集的位置。