我正在为我们的软件创建 WIX 安装程序,现在从以前的 Windows Installer 打包软件升级时遇到了一些问题。
问题之前的一件事,从一个 WIX 打包软件升级到另一个 WIX 打包软件实际上工作正常,我可以卸载旧版本并安装新版本。当旧版本是 Windows Installer 打包(这是我们当前的解决方案)而新版本是 WIX 打包时,真正的问题会发生。基本上我的 WIX 安装程序无法发现已经安装了旧版本,因此将安装新版本而不卸载旧版本。
我如何在 WIX 安装程序和 Windows 安装程序之间建立连接:我将 WIX 的 UpgradeCode 设置为与 Windows 安装程序相同。我还在线查看了一些示例,他们建议我当前的解决方案应该可以工作。这是我升级部分的 .wxs 文件的一部分:
<Upgrade Id="$(var.UpgradeCode)">
<UpgradeVersion OnlyDetect="yes" Minimum="$(var.VersionNumber)" Property="NEWPRODUCTFOUND" IncludeMinimum="no" />
<UpgradeVersion OnlyDetect="no" Maximum="$(var.VersionNumber)" Property="UPGRADEFOUND" IncludeMaximum="no" />
</Upgrade>
<CustomAction Id="PreventDowngrading" Error="A software with newer version number is found on this machine" />
<InstallUISequence>
<Custom Action="PreventDowngrading"
After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
</InstallUISequence>
<InstallExecuteSequence>
<Custom Action="PreventDowngrading"
After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
<RemoveExistingProducts After="InstallFinalize" />
</InstallExecuteSequence>
值得一提的是我们的 SW 实际上是一个 Windows 服务,我不确定这是否重要。谢谢你的帮助!