我已经丢失了旧安装程序的GUID。我使用Orca获得了升级ID,但它仍然无法从程序和功能列表中删除旧版本。我如何使用全新的msi/bootstrapper卸载旧版本?
我已经丢失了旧安装程序的GUID。我使用Orca获得了升级ID,但它仍然无法从程序和功能列表中删除旧版本。我如何使用全新的msi/bootstrapper卸载旧版本?
如果你需要卸载一个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,那么据我所知,只有自定义操作是解决方案(通过自定义操作执行卸载命令行)。
-利用Windows Installer API:MsiEnumRelatedProducts()获取共享相同UpgradeCode的所有产品列表。
https://msdn.microsoft.com/en-us/library/aa370103(v=vs.85).aspx
这个API返回系统上所有安装了共享相同UpgradeCode的产品的产品代码。http://wixtoolset.org/documentation/manual/v3/howtos/updates/major_upgrade.html
(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall)
,查找应用程序名称/发布者,并在找到匹配项时执行UninstallString
命令。