升级安装会导致已安装软件的重复条目(未执行FindRelatedProducts)

时间:2010-01-04 16:47:08

标签: installation windows-installer

我尝试使用带有安静安装的MSI安装程序执行主要升级使用具有完整用户界面的正常安装时,安装程​​序已正常运行。在这种情况下,旧产品将被卸载,因为 FindRelatedProducts 操作(来自FolderForm中的UI序列)检测到我以前安装的版本。

当使用msiexec的/ qr开关来抑制对话框并需要用户交互(基本上重用上一版本的设置)时,它会失败:

MSI (s)  : Doing action: FindRelatedProducts
Action  FindRelatedProducts. Searching for related applications
Action start  FindRelatedProducts.
MSI (s)  : Skipping FindRelatedProducts action: already done on client side
Action ended  FindRelatedProducts. Return value 0.

因此,Windows的已安装软件对话框中会显示两个条目 - 一个用于旧版本和新版本,因此在这种情况下,旧版本未卸载/删除。

是否还有其他我可以使用的msiexec命令开关仍会执行FindRelatedProducts操作?它可以集成到其他地方,以便在如此安静的环境中执行吗?

2 个答案:

答案 0 :(得分:2)

我找到了解决问题的方法,并按预期执行升级。

使用msiexec的 / qb 开关启动时, FindRelatedProducts 将被解除,并且升级正常工作正如预期的那样

我没有找到关于不同UI级别的更好的规范或解释以及对执行的影响,但它可能是调试和解决类似问题的足够信息。

Switch / qr似乎触发了跳过:“跳过FindRelatedProducts操作:已在客户端完成”。

感谢您的支持!

答案 1 :(得分:0)

您似乎专注于症状而非实际问题。只要满足以下两个条件,FindRelatedProducts只需执行一次:每个Upgrade条目的action属性是一个公共(ALL_CAPS)属性,该属性的名称列在属性SecureCustomProperties中。如果这两个都为真,则第一个UI序列应设置action属性,其值应使其与执行序列保持完整,RemoveExistingProducts应处理并删除该属性中列出的关联产品代码。 (当然,运行/ qb会跳过UI序列并回退到只运行你在答案中描述的执行序列条目。)