2010-01-04 52 views
2

我尝试执行主要升级与我的MSI安装程序和安静安装。当使用具有完整用户界面的正常安装时,安装程​​序已经运行良好。在这种情况下,旧产品将被卸载,因为FindRelatedProducts操作(从FolderForm中的UI序列)检测到我以前安装的版本。升级安装会导致安装软件的重复条目(FindRelatedProducts not executed)

当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的已安装软件对话框中显示两个条目 - 一个用于新旧版本,所以在这种情况下旧版本未被卸载/删除。

有,我可以使用,将仍然执行FindRelatedProducts行动的任何其他msiexec命令开关?它是否可以集成到其他地方,以便在如此安静的环境中执行?

+0

难道说你以前的安装是在不同的上下文(每名用户的机器对),比静默安装?当您安装每个用户时,MSI无法卸载每台计算机的安装,反之亦然。这是你必须忍受的技术限制。 – 2010-01-04 16:52:52

+0

感谢您的回答,Divo。 上下文应该相同,只有UI级别不同(5对4)。但是我能看到的是这个动作没有被执行,因为没有显示对话框。它将被用于FolderForm NextButton的DoAction触发,但这是不可见的,并用缩小的UI级别执行。另一方面,当FindRelatedProducts应该被检查并再次触发时,它会被跳过(如上面的日志片段所示),因为它“已经在客户端完成”。因此,在这里,对于两个UI级别,执行相同的操作。 – marco4net 2010-01-05 08:38:30

回答

2

我找到了一种方法来解决这个问题,并如预期的那样进行升级。

/QB开关MSIEXEC推出,FindRelatedProducts被exectuted和升级按预期工作

我还没有发现关于执行不同的UI水平和影响一个更好的规范或解释,但它可能是足够的信息来调试和解决类似的问题。

开关/ QR似乎触发跳跃:“跳绳FindRelatedProducts行动:已在客户端完成”。

感谢您的支持!

0

你似乎都集中在一种症状,而不是实际的问题。只要以下两种情况属实,FindRelatedProducts只需执行一次:每个升级条目的操作属性是公共(ALL_CAPS)属性,此属性的名称在属性SecureCustomProperties中列出。当这两个都为真时,UI序列的第一个应该设置action属性,其值应该使其对执行序列保持完整,RemoveExistingProducts应该处理并删除该属性中列出的相关产品代码。 (当然,运行/ qb将跳过UI序列,并回退到只执行您在回答中描述的执行序列条目)。

+0

两者都是正确的,它在CAPS中并在SecureCustomProperties中列出,并且它被执行。不幸的是,FindRelatedProducts只返回上面的日志输出,并没有找到以前安装的产品:“MSI(s),它返回:跳过FindRelatedProducts操作:已经在客户端完成。”我只能假设在/ qr的情况下,FindRelatedProducts会被跳过,因为它确实存在于UI序列中(即使由于缩减的UI序列而未执行它)。因此,有重复的条目。这可能是一个预期的行为,但我不能说是否是这种情况。 – marco4net 2010-01-06 08:50:49

+0

因此,以前没有用于UI序列的FindRelatedProducts操作的日志记录,只有Execute Sequence跳过了一个?这不是我所期望的。我将不得不在稍后运行一些测试。 :) – 2010-01-06 14:52:17

+0

是的,只是在使用/ qr时才会发生一次,然后在ExecuteSequence中运行,感谢您的支持!我不知道这可能是有意的,或者是我的特定版本的MSI/Windows Installer中的错误? – marco4net 2010-01-07 08:39:35