程序打包二

原创 2012年03月25日 22:29:08

以前只是打包成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

 

相关文章推荐

C#将dll打包到程序中技巧之二

namespace TestLibrary1 { public class Test { public void Point() { ...

APK应用程序的解包、修改、编辑、打包及应用(二)

第二部分:三星闭源系统apk文件的处理,汉化和签名 在这一部分,我们要进入实战。首先,利用一个具体的例子来阐述apk工具包的使用,对apk文件进行解包、汉化、打包和签名。然后,我们来对付三星闭源系统...

Jenkins主从节点使用nw.js打包node程序(二)

上一篇文章详细描述了jenkins主从结构的建立,这一篇就主要描述使用nw.js构建windows程序的方法 首先是构建环境的确认,node 安装 inno setup 安装 nw.js下载安装...

用phonegap打包html5程序(手机app开发html5 juqery moblie phonegap系列二)

1、zhu安装最新版本的phonegap程序
  • lzy8395
  • lzy8395
  • 2014年10月16日 23:26
  • 1154

使用WiX打包你的应用程序之二---向WiX脚本传递信息(属性)的几种方式

使用WiX打包你的应用程序之二---向WiX脚本传递信息(属性)的几种方式 这个系列的第一篇文章,向大家演示了一个最简单的WiX实例.这一篇开始,作为一个逻辑上的延展,我们有义务让WiX引擎知道...
  • softuse
  • softuse
  • 2015年09月13日 19:33
  • 428

Qt之程序打包

  • 2017年11月08日 16:02
  • 445KB
  • 下载

Java桌面程序打包成exe可执行文件

前言: 我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同。其实将java程序打包成exe也需要这个可执行jar文件。 准备: ...

nsi打包程序

  • 2017年06月30日 10:59
  • 10.45MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:程序打包二
举报原因:
原因补充:

(最多只允许输入30个字)