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

标签 wix

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

最佳答案

有两种可能性:

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

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

    一个。如果您将该卸载字符串命令作为即时自定义操作运行,它很可能会失败,因为即时自定义操作未被提升。

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

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

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

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

关于wix - 如何在 Wix 安装程序中卸载另一个程序 (exe)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46051314/

相关文章:

wix - 在wix中复制文件后如何调用自定义操作

Wix XML 错误 - 当 Component 元素嵌套在 Directory 元素下时,无法指定 Component/@Directory 属性

.net - Wix 安装程序和 XSLT - 省略特定目录中的某些文件

c# - 使用 WiX C#/.NET 4 自定义操作时出现错误 2896

Wix 安装位置

WiX 重大升级拒绝替换现有文件!

wix - 使用wix生成可执行文件

installation - 在 C :\ProgramData using WIX installer and deploy few configuration files in that folder 内创建文件夹

wix - 如何比较WiX中的注册表版本?

wix - 在 WiX 中为每用户或每机器安装上下文设置 ALLUSERS