wix:upgrade没有从ARP中删除早期产品

时间:2012-03-29 02:46:56

标签: wix windows-installer

使用Wix 3.5,我的初始MSI包(MyProduct v1.0)包含了很多功能,例如MS Word 95 / XP / 2003/2007 / 2010,MS Excel 95 / XP / 2003/2007 / 2010,MS PowerPoint 95 / XP / 2003/2007 / 2010。 它们的功能级别最初设置为0,但如果特定应用程序存在(使用AppSearch)则设置为1。换句话说,如果安装了MS Office 2003,则只有Word 2003,Excel 2003和PowerPoint 2003功能的级别为1,其余功能保持为0。

最近我使用人们所说的相同方法(例如,How to implement WiX installer upgrade?)进行了升级MSI包(MyProduct v2.0)

我在“InstallExecuteSequence”中安排“RemoveExistingProducts”After =“InstallValidate”

这是一个致命错误:假设用户在安装MyProduct v1.0时拥有MS Office 2003。现在,在将MyProduct升级到v2.0之前,他已将MS Office升级到Office 2007(因此Office 2003不再存在)。我的安装程序无法处理此问题。为什么?我试图通过调用MsiSetFeatureState函数使用类型1自定义操作删除旧功能(例如Word 2003等)。虽然该函数返回ERROR_SUCCESS,但它们的状态没有设置为ABSENT但仍保持为NULL(我知道Word 2003等的功能级别为0,因为它们不再存在,我相信这就是为什么功能状态不变) ,我最终放弃了。 (如果你有任何想法让它发挥作用,请指导我!)

无论如何,我的主要问题不是关于上述错误。目前,我更担心无法删除现有产品v1.0:

案例1:升级而不升级MS Office(正常工作)

当我在不升级MS Office的情况下测试升级时,升级工作正常,并且在添加/删除程序(又称ARP)中只有一个条目(MyProduct v2.0):升级从ARP中删除了早期的产品条目。 / p>

案例2:升级MS Office(灾难)后升级

但是,如果我将Office从Office 2003升级到Office 2007然后执行MSI升级,则不仅安装了Word 2003功能/ Word 2007功能,而且还有两个条目(MyProduct v1.0和MyProduct v2.0)在ARP中。如果我试图在ARP中卸载v1.0,它似乎卸载它,但如果我刷新ARP,v1.0重新出现,所以我甚至无法卸载v1.0。

我比较了为这两种情况生成的日志文件,但它没有告诉我原因。 我不明白为什么。任何人都可以帮助我吗?

0 个答案:

没有答案