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

时间:2017-09-05 09:16:50

标签: wix

我有一个旧设置(exe),我是通过installshield创建的。我想将旧应用程序升级到新应用程序,或者在WIX Toolset中卸载旧应用程序。如果有人有任何想法请帮助我。提前致谢

1 个答案:

答案 0 :(得分:4)

有几种可能性:

  1. 可能是InstallShield安装程序,它创建了要安装的MSI文件。如果是这样,您需要找到其UpgradeCode并在您的WiX中使用升级元素,或使用与旧产品相同的UpgradeCode并进行重大升级。

  2. 如果它不是基于MSI的,那就太乱了。我曾经看过的一种技术是在注册表中找到该产品的UninstallString。您可以使用RegistrySearch将其读入属性。你用它做什么取决于你想要什么样的卸载。一旦你有了uninstall string命令,你就需要担心一些事情:

    一个。如果您将该卸载字符串命令作为立即自定义操作运行,则它可能会失败,因为不会立即执行自定义操作。

    湾如果您希望它保持沉默,则必须以编程方式检查卸载命令字符串并添加静默开关,这取决于InstallShield使用的任何版本。可能还有一个"显示卸载进度"选择。

    ℃。如果您作为延迟自定义操作以静默方式运行卸载,则会在impersonation = no时提升,但如果它以静默方式失败并且您的安装仍在继续,那么将安装旧版本和新版本。

    d。如果您在卸载旧产品后安装失败,则用户将不会安装任何产品。

  3. 换句话说,案例2中没有好的选择,因为失败的可能性很高。在大多数情况下,安全的答案是检测旧产品并要求用户手动卸载它。进入MSI模式后,您可以使用MajorUpgrade元素进行无缝升​​级。