程序打包二

原创 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

 

使用VS2010打包软件详解!

使用VS2010下Visual Studio Installer工程进行软件安装包制作          软件在功能开发实现后,其实并没有真正的完成。对于一个专业的开发者来说,Release软件应...
  • l357630798
  • l357630798
  • 2016年10月10日 19:32
  • 547

VB程序打包方法

VB学习已经有很长一段时间了,在马上就迎来的作品展中,相信大家的作品也接近了尾声,VB程序的最后一步就是打包发布,对此,我遇到了很多问题,我找到了两个解决的方法。利用VB本身提供的打包程序可以实现打包...
  • lu930124
  • lu930124
  • 2013年04月24日 21:15
  • 5309

Delphi 程序打包注意事项

Delphi具有强大的数据库应用程序开发功能,其Client/Sever版本可以开发一般的单机数据库应用系统、普通Client/Sever应用系统直至基于Web的多层应用,其中自然离不开Borland...
  • volfish
  • volfish
  • 2009年08月06日 15:55
  • 443

Eclipse程序打包

当项目完成后接下来的就是打包发行了,应用程序(Application)项目和Eclipse插件项目(plugin)的打包是不同的,本章将分别介绍两者的打包方法,并给出实际的打包例子。 1.1  简介...
  • qustfeng
  • qustfeng
  • 2015年06月03日 14:47
  • 1645

图解WPF应用程序打包(包含环境打包)

https://jingyan.baidu.com/article/48b558e32f06b67f38c09a34.html
  • tiz198183
  • tiz198183
  • 2017年07月21日 11:31
  • 651

使用 IntelliJ IDEA打包Spark应用程序

Spark作为下一代大数据处理引擎,在非常短的时间里崭露头角,并且以燎原之势席卷业界。本篇主要介绍了如何使用IDEA在本地打包Spark应用程序(以K-Means为例),并提交到集群执行。...
  • u011826404
  • u011826404
  • 2016年11月17日 20:27
  • 3416

Linux下最常用的打包程序用法总结

Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进  行压缩了,所以首先就来讲讲...
  • u014057054
  • u014057054
  • 2017年03月26日 17:01
  • 1043

VS2013程序打包部署(图解)

首先要说明的是VS解决方案配置下的Debug模式和Release模式有什么区别。Debug模式通常称为调试模式,它包含调试信息,未对代码进行优化,方便程序员调试程序;Release模式通常叫做发布模式...
  • u010926964
  • u010926964
  • 2014年08月04日 15:57
  • 17876

vs2008打包过程图解

1.解决方案右击添加--新建项目 项目安装名称添入即可 点击确定 2.如图所示,开始添加项目debug下文件 右击应用程序文件夹 ---添加文件,指定到项目的debug路径下,如...
  • gisdoer
  • gisdoer
  • 2015年10月12日 10:55
  • 1453

Python 练手程序合集(二)

三、猴子吃桃猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾就多吃了一个。第二天早上又将剩下的桃子吃了一半,还是不过瘾又吃了一个。以后每天都吃前一天剩下的一半再加一个。到第10天刚好剩一个。问猴子第一...
  • tan6600
  • tan6600
  • 2016年01月29日 12:29
  • 2086
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:程序打包二
举报原因:
原因补充:

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