程序打包二

来源:互联网 发布:手机淘宝网软件下载 编辑:程序博客网 时间:2024/05/01 17:49

以前只是打包成MSI和EXE,今天用打包水晶报表用到合并模块,便查看了一下合并模块是什么意思。

1、Windows Installer 用于在其他计算机上安装应用程序和文件,合并模块用于安装由多个应用程序共享的组件。

2、应用程序的最终用户将直接使用的任何内容(可执行文件、文档、HTML 页)都应打包到 Windows Installer 中
仅供开发人员使用的任何内容(DLL、控件、资源)都应打包到合并模块中,然后开发人员可将合并模块打包到分发给最终用户的 Windows Installer 中

3、由多个应用程序共享(或有可能共享)的任何组件都应放入其自己的合并模块中。虽然可以将多个组件放入一个合并模块中,但最好为每个组件创建一个合并模块,这样可以避免分发不必要的文件。 

 

 

用于部署 Visual C++ 库 DLL 作为共享程序集的过程

 

将 EXE 和 DLL 添加到项目中并指定它们应在目标计算机上安装的位置

  1. 在“项目”菜单中,选择“添加”,然后单击“文件”。

  2. 找到包含 MyApplication.exe 和 MyLibrary.DLL 的文件夹,然后选择这两个文件。

  3. 在“文件系统”窗口中,右击“应用程序文件夹”,指向“添加”,然后单击“创建”以创建一个新文件夹。将其命名为 MyLibrary。

  4. 再次单击“应用程序文件夹”,选择 MyLibrary.DLL 并将其拖放到 MyLibrary 文件夹中。在“解决方案资源管理器”中,在您的项目下的“检测依赖项”中,您应看到 Visual Studio 在 MFC80.dll 和 MSVCR80.dll 上检测依赖项。您需要为这些 DLL 添加相应的合并模块。

  5. 在“项目”菜单上,指向“添加”,然后单击“合并模块”。选择 Microsoft_VC80_CRT_x86.msm 和 Microsoft_VC80_MFC_x86.msm,然后单击“确定”。

    注意

    这些合并模块的调试版本的名称为 Microsoft_VC80_DebugCRT_x86.msm 和 Microsoft_VC80_DebugMFC_x86.msm。

    若要将 64 位应用程序部署到 64 位操作系统,请选择相应平台的合并模块。对于 x64,选择 Microsoft_VC80_CRT_x86_x64.msm 和 Microsoft_VC80_MFC_x86_x64.msm;对于 Itanium,选择 Microsoft_VC80_CRT_x86_ia64.msm 和 Microsoft_VC80_MFC_x86_ia64.msm。

生成 setup.exe

  • 在“生成”菜单上单击“生成解决方案”。

运行 setup.exe

  • 您的应用程序将安装在指定的目标文件夹中。

  • 合并模块将 CRT 和 MFC 程序集安装为共享的并行程序集。可通过检查 %WINDIR%\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50613.12800_x-ww_b7acac55\ 和 %WINDIR%\WinSxS\x86_Microsoft.VC80.MFC_1fc8b3b9a1e18e3b_8.0.50613.12800_x-ww_88931f5a\ 文件夹对此进行验证

  • 应用程序和 DLL 在运行时使用 CRT 和 MFC 程序集。必须将 %TARGET%\MyLibrary 添加到 PATH 环境变量中,以便 MyApplication.exe 可以找到 Mylibrary.Dll。(也可以将其重新生成为并行程序集。)

在不支持基于清单的绑定的操作系统(Windows 95、Windows 98、Windows 98 Second Edition、Windows Millennium Edition 和 Windows 2000)上,将发生以下情况:

  • 您的应用程序将安装在指定的目标文件夹中。

  • 合并模块在两个位置安装 CRT 和 MFC 程序集:

    • %WINDIR%\System32 - 这可确保即使操作系统不支持基于清单的绑定,应用程序也可在此操作系统上运行。

    • %WINDIR%\WinSxS(与 Windows XP Home Edition、Windows XP Professional、Windows Server 2003 相似)- 这可确保当操作系统升级到 Windows XP Home Edition、Windows XP Professional、Windows Server 2003 时,应用程序将仍运行并使用 WinSxS 中的 DLL。在 Windows Upgrade 通知已安装的应用程序有关操作系统升级的过程中,将移除 System32 中的 DLL。

  • 应用程序和 DLL 在运行时使用来自 System32 的 CRT 和 MFC DLL。

用于部署 Visual C++ 库 DLL 作为私有程序集的过程

创建安装和部署项目

  • 在“文件”菜单中,单击“新建项目”,打开“其他项目类型”节点并选择“安装和部署”,然后单击“安装项目”。指定一个名称,然后单击“确定”。

将 EXE 和 DLL 添加到项目中并指定它们应在目标计算机上安装的位置

  1. 在“项目”菜单中,选择“添加”,然后单击“文件”。

  2. 找到包含 MyApplication.exe 和 MyLibrary.DLL 的文件夹,然后选择这两个文件。

  3. 在“文件系统”窗口中,右击“应用程序文件夹”,指向“添加”,然后单击“创建”以创建一个新文件夹。将其命名为 MyLibrary。

  4. 再次单击“应用程序文件夹”,选择 MyLibrary.DLL 并将其拖放到 MyLibrary 文件夹中。在“解决方案资源管理器”中,在您的项目下的“检测依赖项”中,您应看到 Visual Studio 在 MFC80.dll 和 MSVCR80.dll 上检测依赖项。您需要为 \vc\redist 文件夹中的这些程序集添加相应的文件夹。

    注意

    对于调试版本,使用 \vc\redist\debug_nonredist。

  5. 在 Windows 资源管理器中,打开 %PROGDIR%\Microsoft Visual Studio 8\VC\Redist\x86。

  6. 按住 Ctrl,单击 Microsoft.VC80.CRT 和 Microsoft.VC80.MFC 文件夹。将这些文件夹拖到 Visual Studio 并将它们拖入“应用程序”文件夹中。

  7. 重复步骤 7,但这次将文件夹拖到 MyLibrary 文件夹中。

    您可能看到来自 Visual Studio 的消息,指出您正在包含作为合并模块一部分的 DLL。这正是您要执行的操作,因此,单击“否”以指示您不希望对此 DLL 使用 MSM。

    仅当使用 MFC/Winforms 集成时,才需要 mfcm80.dll 及其 Unicode 版本 mfcm80u.dll。否则,可从安装中移除这些 DLL。

    仅当正在应用程序中使用托管代码时,例如,当用 /clr 或 /clr:pure 生成项目时,才需要 msvcm80.dll。

    如果安装项目中包括 mfcm80.dll、mfcm80u.dll 或 msvcm80.dll,需要安装 .NET Framework。如果目标计算机上未安装 .NET Framework 2.0,安装将不会运行。

    对于调试安装,在上一步中将 CRT 更改为 DebugCRT 并将 MFC 更改为 DebugMFC。

    对于将 64 位应用程序部署到 64 位操作系统,使用 \vc\redist\amd64 或 \vc\redist\ia64。

生成 setup.exe

  • 在“生成”菜单上单击“生成解决方案”。

运行 setup.exe

  • 您的应用程序将安装在指定的目标文件夹中。

  • 该应用程序和 DLL 在运行时使用来自 Microsoft.VC80.CRT 和 Microsoft.VC80.MFC 文件夹的 CRT 和 MFC 程序集。

在不支持基于清单的绑定的操作系统(Windows 95、Windows 98、Windows 98 Second Edition、Windows Millennium Edition 和 Windows 2000)上,不建议使用此部署方法。强烈建议您改用 MSM。如果尝试进行安装,将发生以下情况:

  • 您的应用程序将安装在指定的目标文件夹中。

  • 默认情况下,操作系统加载程序将找不到 CRT 和 MFC DLL。必须将 Microsoft.VC80.CRT 和 Microsoft.VC80.MFC 添加到 PATH

 

原创粉丝点击