RemoveExistingProducts 操作
RemoveExistingProducts 操作将遍历 Upgrade 表的 ActionProperty 列中列出的产品代码,并通过调用并发安装按顺序移除产品。 对于每个并发安装,安装程序会将 ProductCode 属性设置为产品代码,并将 REMOVE 属性设置为 Upgrade 表的 Remove 字段中的值。 如果 Remove 字段为空,则其值默认为 ALL,安装程序将移除整个产品。
安装程序仅在首次安装产品时运行 RemoveExistingProducts 操作。 它不会在维护安装或卸载期间运行操作。
序列限制
RemoveExistingProducts 操作必须在以下位置之一的操作序列中计划。
- 在 InstallValidate 操作 和 InstallInitialize 操作之间。 在这种情况下,安装程序会在安装新应用程序之前完全移除旧应用程序。 对于操作来说,这是一种低效的布局,因为所有重用的文件都必须重新复制。
- 在 InstallInitialize 操作之后,且在生成执行脚本的任何操作之前。
- 在 InstallExecute 操作/InstallExecuteAgain 操作与 InstallFinalize 操作之间。 通常,最后三个操作是紧接着安排的:InstallExecute、RemoveExistingProducts 和 InstallFinalize。 在这种情况下,首先安装更新的文件,然后移除旧文件。 但是,如果移除旧应用程序失败,安装程序将回滚旧应用程序的移除和新应用程序的安装。
- 在 InstallFinalize 操作之后。 这是最高效的操作放置方式。 在这种情况下,安装程序先更新文件,然后再移除旧应用程序。 在安装过程中,仅安装要更新的文件。 如果移除旧应用程序失败,安装程序仅回滚旧应用程序的卸载。
ActionData 消息
字段 | 操作数据说明 |
---|---|
[1] | 已移除产品。 |
备注
Windows Installer 在运行此操作时设置 UPGRADINGPRODUCTCODE 属性。