msi uninstall不会删除添加删除程序条目和包本身

时间:2016-04-04 13:42:09

标签: windows-installer installshield uninstall

我已经使用InstallShield 2012创建了安装程序,它基本上是一个打包到setup.exe中的MSI

问题在于,当我尝试删除它时(使用msiexec /x {productcode}"uninstall" in Add/Remove programs (appwiz.cpl)),该过程看起来很好,并且根据详细日志成功完成卸载但不删除包({{ 1}}可以再次启动并调出msiexec,显示卸载过程),我仍然有添加删除程序的条目。这重复了很多次。

奇怪的是,如果我在维护模式下启动安装程序(ARP中的“更改”按钮)或启动安装程序并选择“删除”,它将按预期工作。

添加链式包后,很可能出现此行为。安装条件为:

msiexec /x {productcode}

卸载条件设置为始终为false(需要保留的情况)。但我使用它自己的msi删除了这个产品。 但是为了说清楚,我试图删除卸载条件或在此链式包上将其设置为Not Installed AND &FeatureName=3 ,但它没有帮助。在进行实验时,我在删除前在REMOVE~="ALL"下编辑了msi。 卸载详细日志大约是10兆,它表示卸载成功,因此很难进行调查。

1)我很感激有关如何更好地进行调查的任何建议。

2)为什么删除在维护模式下工作但不在卸载中?

3)如果问题仍然存在于链式MSI中,是否有办法离开它并正确删除主MSI?

1 个答案:

答案 0 :(得分:0)

问题是单个功能的级别为“0”但是在安装时它使用条件表更改为适当的级别(1或300,具体取决于条件)但在卸载时它保持为级别“0”问题是安装程序更改功能状态的功能不处理级别为“0”的功能,因此即使对于REMOVE = ALL,此功能状态也没有被处理

Feature: featurename; Installed: Local;   Request: None;   Action: None

为了解决问题,我已将条件表条目设置功能级别添加到300,条件为REMOVE~ =“ALL”。