在我们产品的一个安装程序版本中,我添加了一个自定义对话框(由CA使用session.Message()
显示),询问用户是否要在卸载时保留他的部分数据。
CA的条件设置为REMOVE="ALL" AND NOT WIX_UPGRADE_DETECTED
。
执行正常卸载时会正确显示该对话框,但在主要升级时删除现有产品时也会显示该对话框。此时,安装程序挂起,只能从任务管理器关闭,导致升级不正确。
包含该问题的安装程序版本已经发货。 我们可以在下一个安装程序版本(进行重大升级)中包含哪些内容,以解决删除现有产品时的对话问题?
答案 0 :(得分:2)
属性UPGRADINGPRODUCTCODE在旧产品中设置,因为它正在卸载。检测到WIX_UPGRADE_DETECTED在传入的新升级设置中设置。
REMOVE =" ALL" AND NOT UPGRADINGPRODUCTCODE似乎是您想要的,在卸载期间显示对话框,但不是因为主要升级而卸载时。
答案 1 :(得分:1)
您需要修复原始版本的缓存MSI。在静默安装事务期间不应该有任何UI。您需要制作原始构建的MSI的副本,将其修改为不执行该自定义操作,然后使用msiexec / I foo.msi REINSTALL = ALL REINSTALLMODE = vomus进行重新缓存,然后才能进行主要升级。或者,告诉您的用户先卸载。这就是您在投入生产之前测试服务策略的原因。 MSI就像一架飞机......没有停止或返回按钮。你总是在前进,你必须做出相应的计划。