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

问题描述:

我有一个旧的安装程序(exe),我已通过installshield创建。我想升级我的旧应用程序到新的应用程序,或者卸载WIX Toolset中的旧应用程序。如果任何人有一些想法,请帮助我。在此先感谢如何在wix安装程序中卸载另一个程序(exe)?

有几个可能的原因:

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

  2. 如果它不是基于MSI的,那是一团糟。我见过的一种技术是在注册表中找到该产品的UninstallString。您可以使用RegistrySearch将其读取到某个属性中。你用它做什么取决于你想要什么样的卸载。一旦你有卸载字符串命令有几件事情你需要担心:

    a。如果将该卸载字符串命令作为即时自定义操作运行,则可能会失败,因为不立即提供自定义操作。

    b。如果您希望它保持沉默状态,则必须以编程方式检查卸载命令字符串并添加无提示开关,并且这将取决于InstallShield使用的任何版本。可能还会有“显示卸载进度”选项。

    ℃。如果以默认方式运行卸载作为延迟自定义操作,则它会在模拟=否时提升,但如果它静默失败并且无论如何您的安装都会继续,那么将会安装旧版和新版。 d)。如果在卸载较旧的产品后安装失败,用户将不会安装任何产品。

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

+0

我已经通过你的第一种可能性,现在它工作正常。非常感谢你的建议,其实我是Stackowerflow的新成员,所以我不能投票给你。我希望我能够为你投票。 –

+0

对于非MSI,“安全的答案是检测旧产品并要求用户手动卸载它”看起来像是一个警察,但是非常合理。 –