[英]Upgrade MSI using WIX
我正在使用WIX创建一个MSI安装程序。 很好,我能够创建自己的产品并创建所有东西。
但是当我想创建一个升级时,它就无法正常工作。
我使用了以下代码,其中$(var.ProductUpgradeCode)被定义并用作product元素中的升级代码。
<Upgrade Id="$(var.ProductUpgradeCode)">
<UpgradeVersion OnlyDetect="yes" Property="SELFFOUND"
Minimum="$(var.ProductVersion)" IncludeMinimum="yes"
Maximum="$(var.ProductVersion)" IncludeMaximum="yes" />
<UpgradeVersion OnlyDetect="yes" Property="NEWERFOUND"
Minimum="$(var.ProductVersion)" IncludeMinimum="no" />
</Upgrade>
<CustomAction Id="AlreadyUpdated" Error="[ProductName] has already been updated to [ProductVersion] or newer." />
<CustomAction Id="NoDowngrade" Error="A later version of [ProductName] is already installed." />
<InstallExecuteSequence>
<Custom Action="AlreadyUpdated" After="FindRelatedProducts">SELFFOUND</Custom>
<Custom Action="NoDowngrade" After="FindRelatedProducts">NEWERFOUND</Custom>
<RemoveExistingProducts After="InstallFinalize"></RemoveExistingProducts>
</InstallExecuteSequence>
在旧的MSI中,产品ID =“ =” GUID1“版本=” 1.0.0“
在新的MSI中,产品ID =“ =” GUID2“版本=” 1.0.1“
当安装了旧版本,而我尝试安装新版本时。 启动旧的MSI,并询问“更改/修复/删除”对话框。 但是我想继续安装,当按“ Install”(在progressDlg之前)时,我想卸载旧版本。
在1.0.0和1.0.1之间只有一个文件更改。 我所有的文件都有自己的组件和自己的GUID集(不是自动的)。
怎么了 ? 新的WIX版本是否有用? 我昨天下载了最新的。
假设新MSI中的其他所有内容都正确,那么我看到的错误是升级设置中只有OnlyDetect = yes。 正如WiX文档所述:“设置为“是”以检测产品和应用程序,但不卸载”。 因此,首先要进行更改。
请注意,使用MajorUpgrade元素更为常见,该元素负责设置。 没有冗长的日志,其他一切都正确(例如MSI中的FindRelatedProducts)并不明显。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.