windows-installer - 拥有第三方 msi 的 ProductCode 和 UpgradeCode,如何在安装我的产品时强制卸载 msi
问题描述
通过测试,我发现我们的第三方软件的升级是如何使我们的产品无法运行的。但是,同一位测试人员告诉我,卸载旧的第三方软件并安装较新版本的软件似乎可行。
我被要求在安装新的先决条件之前删除旧软件。我很惊讶升级没有正常工作,但我想知道如何实现这一点。
在您知道 ProductCode 和 UpgradeCode 的捆绑安装程序期间,是否有任何方法可以卸载产品?
编辑:进一步研究,我在第三方软件网站上发现了以下内容
升级后,他们必须在控制面板/程序中修复安装
通过wix安装后是否可以运行修复?
解决方案
修复:要在安装结束时修复另一个设置,有几种方法。
MSI:您可以在 MSI 安装 GUI 序列的末尾插入此 msiexec.exe 命令作为 hack。这确实是一个 hack - 可能会导致问题:
msiexec.exe /fa {00000000-0000-1111-0000-000000000000}
Burn:如果您作为 Burn Bundle 的一部分运行,则可以
Repair.cmd
使用上述命令插入批处理文件,然后将其作为 ExePackage 插入到 Burn Bundle 中。也很hacky。片段<..> <Chain> <!--<MsiPackage SourceFile="Product.msi" />--> <ExePackage SourceFile="Repair.cmd" /> </Chain> <..>
最好先安装自己的设置后安装最新版本的运行时。这似乎是最不容易出错的。
Setup.exe:我认为更好的选择是提供一个 setup.exe,它首先使用最新版本的第三方运行时,然后安装您自己的软件,如果这不起作用,请尝试安装最新版本的安装自己的软件之后的第三方运行时?你熟悉烧录吗?WiX 的 setup.exe 引导程序/下载程序/捆绑程序?
快速刻录示例:带有 Visual Studio 2017 安装程序项目的 SQL Server 命名实例
Setup.exe 用法:
- 安装更新的 Crystal Reports - 最新版本
- 安装自己的软件包
或者如果上述失败,请切换顺序?
推荐阅读
- javascript - 如何使用 normalizr 根据实体父级的值通过不同的模式对数据进行规范化?
- kotlin - Kotlin 协程异步等待序列
- python - AttributeError:“...”对象没有属性“_type_equality_funcs”
- sql - SQL 设置递增整数,其中列的值为 1
- c# - ASP 仅在使用 var 类型时显示第一个 gridview
- node.js - 一对多保存没有响应(承诺)
- mql4 - 将互联网时间数据导入 metatrader4
- netlogo - Netlogo:具有重复元素的数字序列
- javascript - kendo ui上传前的预处理
- java - 数独求解器无限递归 Java