Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在wix安装程序中卸载另一个程序(exe)?_Wix - Fatal编程技术网

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

如何在wix安装程序中卸载另一个程序(exe)?,wix,Wix,我有一个旧的安装程序(exe),它是通过installshield创建的。我想将我的旧应用升级到新应用,或者在WIX工具集中卸载旧应用。如果有人有什么想法,请帮助我。提前感谢有几种可能性: 可能是InstallShield安装程序创建了要安装的MSI文件。如果是这样,您需要找到它的升级代码并在WiX中使用升级元素,或者使用与旧产品相同的升级代码并进行重大升级 如果它不是基于MSI的,那就是一团糟。我见过的一种技术是在注册表中找到该产品的卸载字符串。您可以使用RegistrySearch将其读取到

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

有几种可能性:

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

  • 如果它不是基于MSI的,那就是一团糟。我见过的一种技术是在注册表中找到该产品的卸载字符串。您可以使用RegistrySearch将其读取到属性中。如何使用它取决于您想要的卸载类型。使用卸载字符串命令后,您需要担心以下几件事:

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

    b。如果希望它是静默的,则必须以编程方式检查卸载命令字符串并添加静默开关,这将取决于InstallShield版本使用的是什么。还可以选择“显示卸载进度”

    c。如果将卸载作为延迟的自定义操作以静默方式运行,则如果模拟=否,卸载将被提升,但如果卸载以静默方式失败且安装仍在继续,则将安装旧版本和新版本

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


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

    我已经考虑了你的第一种可能性,现在它工作得很好。非常感谢你的建议,事实上我是Stackowerflow的新手,所以我不能投你的票。我希望我能投你一票。对于非MSI,“安全的答案是检测旧产品并要求用户手动卸载它”似乎是一种逃避,但实际上是相当合理的。