【发布时间】:2018-11-30 19:04:53
【问题描述】:
在安装我的软件时,我需要注意之前卸载了另一个 msi 包。这可能吗?烧可以帮我做吗?
【问题讨论】:
在安装我的软件时,我需要注意之前卸载了另一个 msi 包。这可能吗?烧可以帮我做吗?
【问题讨论】:
MSI / 主要升级:您可以在您安装的一个或所有 MSI 文件中将条目添加到 Upgrade table。然后在安装 MSI 之前(或之后)卸载旧的/其他 MSI。这是 MSI 内置的 "major upgrade" feature,旨在为您自己的产品提供升级,但您可以卸载任何您想要的基于 MSI 的产品 - 甚至是竞争产品 - 只有在您疯了的情况下,并且首先调用合法 :-) .也许看到这个描述(至少相关问题):Adding entries to MSI UpgradeTable to remove related products。
Burn:Burn 可以运行可以启动卸载预先存在的 MSI 文件的 EXE 文件,但是当您可以使用上述内置文件时,我绝不会选择这种方法 -相反,在 MSI 方法中。我不确定您是否可以通过 Burn 的 ExePackage element 直接调用 msiexec.exe,但是您可以通过多种方式从自定义 EXE 文件中触发卸载:@987654325 @。这取决于您的 EXE 是用什么编写的。如果它是托管代码,则可以使用 DTF 方法(链接答案中的选项 6)。如果是 C++,可能使用 MSI API Win32 函数。 请参阅链接答案中的选项 14。我想您也可以选择支付给msiexec.exe(选项3)。我的建议:始终使用本机代码进行部署。您的设置必须适用于任何机器、任何语言、任何状态和任何操作系统版本。还有很多变数。 最小的依赖是唯一的治疗方法。
【讨论】: