我实施了升级处理程序和降级预防
<Upgrade Id="$(var.UpgradeCode)">
<UpgradeVersion OnlyDetect="no" Minimum="$(var.MinimumUpgradeVersion)" Maximum="$(var.ProductVersion)" IncludeMinimum="yes" IncludeMaximum="no" Property="PREVIOUSVERSIONINSTALLED" MigrateFeatures="yes" />
<UpgradeVersion OnlyDetect="yes" Minimum="$(var.ProductVersion)" IncludeMinimum="no" Property="NEWERVERSIONINSTALLED" />
</Upgrade>
进一步
<Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWERVERSIONINSTALLED AND NOT Installed</Custom>
<RemoveExistingProducts After="InstallInitialize">PREVIOUSVERSIONINSTALLED</RemoveExistingProducts>
但是,现在当我尝试双击我的MSI进行修复时,UI不再出现了。我使用相同的升级代码,因此Wix应该自动允许我修复。
有什么想法吗?
答案 0 :(得分:1)
要进行重大升级,最好使用majorupgrade元素来确保包含所需的所有内容。假设您需要进行重大升级,我无法分辨。
你误会了什么。当您拥有将替换旧版本的产品的新版本时,您(在WiX中)使用majorupgrade元素,其中包括新的ProductCode和相同的UpgradeCode。这与修复无关。当您尝试修改ProductCode定义的现有已安装产品而不是UpgradeCode时,修复是可用的选项之一。修复不是升级或任何类型的更新。它修复现有产品,并且需要与最初安装产品相同的MSI文件。相同的UpgradeCode与修复无关。
答案 1 :(得分:0)
您包含哪些GUI?请在此处查看在线教程:http://wix.tramontana.co.hu/tutorial/user-interface/ui-wizardry
您是否设置了ARPNOREPAIR property?在以下位置检查注册表(子项,检查DWORD NoRepair):