DetailPage-MSS-KB

知识库

文章编号: 306439 - 最后修改: 2006年2月20日 - 修订: 3.0

 

概要

嵌套安装操作是在当前运行的安装过程中安装另一个 Windows Installer 程序包。本文说明如何创建执行嵌套安装的程序包。

更多信息

通过在“CustomAction”表中创建一个嵌套安装操作,并在顺序表中调度这个自定义操作,您可以将嵌套安装添加到程序包。“CustomAction”表的“目标”框包含嵌套安装使用的公共属性设置的字符串。“CustomAction”表的“源”框标识嵌套程序包。嵌套安装操作只能重新安装或删除由当前应用程序的安装程序包已安装的应用程序。

嵌套安装操作的类型在“CustomAction”表的“类型”框中指定。根据自定义操作类型,嵌套应用程序的程序包可以驻留在主程序包的“子存储”中,作为由属性指定的位置处的文件,或者作为用户的计算机上已公布的应用程序。
收起该表格展开该表格
自定义操作类型说明
自定义操作类型 7驻留在安装程序包中的产品的嵌套安装。
自定义操作类型 23当前源树中的安装程序程序包的嵌套安装。
自定义操作类型 39已公布的安装程序程序包的嵌套安装。
下面是一个如何创建嵌套安装自定义操作类型 7 的示例。该示例使用一个名为 Orca 的工具(此工具包含在 Windows Installer SDK 中)来编辑 .msi 程序包,因为 Visual Studio Installer 无法创建嵌套安装自定义操作。(有关 Orca 的更多信息,请参见“参考”一节。)嵌套安装涉及两个 .msi 程序包。下面的示例将 Basic.msi 用作父 .msi 程序包,将 Nest.msi 用作嵌套 .msi 程序包。
  1. 使用 Msidb 工具(此工具包含在 Windows Installer SDK 中)添加 Nest.msi 程序包,作为 Basic.msi 文件的“子存储”。命令行为:
    Msidb -d Basic.msi -r Nest.msi
    这会将 Nest.msi 作为子存储添加到 Basic.msi 文件中。不会出现确认操作已成功执行的对话框,但 Basic.msi 的文件大小将会增加。

    注意:您不能通过使用 Orca 中的“二进制”表将 Nest.msi 添加为子存储。当您通过“二进制”表将文件添加到 MSI 时,文件作为二进制流添加,而不是作为子存储。通过“二进制”表添加的文件不能被“CustomAction”表的源列引用。
  2. 使用 Orca 打开 Basic.msi。找到“CustomAction”表,然后键入自定义操作的信息。如果需要将任何公共属性传递给嵌套程序包,可以使用“目标”框来实现此目的。有两个自定义操作;一个用于安装,一个用于卸载(其目标字段的内容为“REMOVE=ALL”)。下面是一个示例“CustomAction”表:
    收起该表格展开该表格
    操作类型目标
    InstallNest7Nest.msi
    UnInstallNest7Nest.msiREMOVE=ALL
  3. 在“InstallExecuteSequence”表中调度自定义操作。“InstallExecuteSequence”表中有“安装”和“卸载”操作的条件语句。该条件将绑定到“安装”(>2) 和“卸载”(<=2) 的组件。您也可以将这些操作绑定到某个功能或其他属性。嵌套安装自定义操作必须放在 InstallFinalize 之前。如果将组件或功能用作条件,自定义操作必须放在 CostFinalize 之后。下面是一个 InstallExecuteSequence 示例,它假定在名为“Comp_1”的 Basic.msi 中有一个组件和嵌套安装基于 Comp_1 状态的条件:
    收起该表格展开该表格
    操作条件顺序
    InstallNest$Comp_1>23110
    UnInstallNest$Comp_1<=23120

参考

有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
255905  (http://support.microsoft.com/kb/255905/ ) 如何使用 Orca 数据库编辑器编辑 Windows Installer 文件

这篇文章中的信息适用于:
  • Microsoft Windows Installer 1.1
  • Microsoft Windows Installer 1.2
  • Microsoft Windows Installer 2.0
关键字: 
kbhowto KB306439
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。
过时的知识库文章不再更新的 KB 内容免责声明
本文介绍那些 Microsoft 不再提供支持的产品。因此本文按“原样”提供,并且不再更新。
其他支持选项
Microsoft Community 支持论坛
直接联系我们
查找 Microsoft 认证合作伙伴
Microsoft 商店
关注我们: