如何在wix安装程序中卸载另一个程序?

时间:2015-07-30 19:16:05

标签: wix uninstaller

我丢失了旧安装程序的GUID。我设法使用Orca获得升级ID,但它仍然没有从程序和功能列表中删除旧版本。如何卸载一个全新的msi / bootstrapper?

3 个答案:

答案 0 :(得分:8)

如果您要卸载MSI(即不是引导程序),那么您应该能够使用WIX <Upgrade>元素将其卸载,方法是在那里指定:

<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is installed." />

<Upgrade  Id="{YOUR-OTHER-STUFF-GUID-HERE}">
  <UpgradeVersion OnlyDetect="no" Property="OTHER_STUFF_FOUND" Minimum="0.0.0" />
</Upgrade>

如果你有一些EXE要卸载,而不是MSI,那么AFAIK只有自定义操作才是解决方案(只需使用自定义操作执行卸载行)。

答案 1 :(得分:0)

- 使用Windows安装程序API:MsiEnumRelatedProducts()获取共享相同UpgradeCode的所有产品的列表。

https://msdn.microsoft.com/en-us/library/aa370103(v=vs.85).aspx

此API返回系统上安装的共享相同UpgradeCode的所有产品的产品代码。

您可以通过互联网或Windows安装程序SDK查看此示例。

希望这有帮助。

此外,最近有一个相关问题:

WiX - Allowing a *manual* uninstall of one msi to uninstall another msi that shares the same UpgradeCode (and not just during the MajorUpgrade)

- 另一种方法是使用新的msi包升级旧的msi包。

http://wixtoolset.org/documentation/manual/v3/howtos/updates/major_upgrade.html

希望这有帮助。

答案 2 :(得分:0)

另一种方法是从注册表中读取卸载密钥(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall)并查找您的应用程序名称/发布者,如果匹配,则执行UninstallString命令。