Windows installer msi卸载不会删除添加-删除程序项和程序包本身

Windows installer msi卸载不会删除添加-删除程序项和程序包本身,windows-installer,installshield,uninstallation,Windows Installer,Installshield,Uninstallation,我用InstallShield 2012创建了安装程序,它基本上是一个打包到setup.exe中的MSI 问题是,当我尝试删除它时(使用msiexec/x{productcode}或通过在Add/remove programs(appwiz.cpl)中使用“uninstall”来删除),过程看起来很好,根据详细日志,卸载成功完成,但包没有被删除(msiexec/x{productcode}可以再次启动并调用msiexec(显示卸载过程),而我在add-remove-programs中仍然有条目。

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

问题是,当我尝试删除它时(使用
msiexec/x{productcode}
或通过在Add/remove programs(appwiz.cpl)中使用
“uninstall”来删除),过程看起来很好,根据详细日志,卸载成功完成,但包没有被删除(
msiexec/x{productcode}
可以再次启动并调用msiexec(显示卸载过程),而我在add-remove-programs中仍然有条目。这会重复多次

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

这种行为很可能是在添加链接包后出现的。安装条件为:

Not Installed AND &FeatureName=3
卸载条件设置为始终为false(案例要求它保持不变)。但我删除这个产品使用它自己的微星。 然而,为了说明这一点,我尝试删除卸载条件,或者将其设置为
remove~=“ALL”
,但没有任何帮助。在实验过程中,我在删除之前在
c:\Windows\installer
下编辑msi。 卸载详细日志大约是10兆,它说卸载成功,所以很难调查

1) 如果您能就如何更好地进行调查提出建议,我将不胜感激

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


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

问题在于,一个单一功能的级别为“0”,但在安装时,使用条件表将其更改为相应级别(1或300,取决于条件),但卸载时仍保持为级别“0”问题是,安装程序用于更改功能状态的函数不会处理级别为“0”的功能,因此即使对于REMOVE=ALL,也不会更改此功能状态

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

为了修复它,我添加了条件表条目设置功能级别为300,条件移除~=“ALL”。

我很确定这是一个已确认的InstallShield错误,但我现在找不到对应项。最后,我添加了一个自定义操作,从注册表中删除添加/删除项,但我相信有更好的解决方案。删除添加/删除项不是一个选项,因为包本身仍保留在存储库中:(这可能是一个问题,比如说至少升级。我的安装大约为1 Gb。将这样的内容保留在系统中至少是一个问题。)“不好”。我可以先用MSI删除链接包,然后再删除主MSI,但我不明白为什么它只在主MSI的维护模式下工作