我想自定义我的安装程序,以便在安装以前版本时显示自定义对话框:在欢迎对话框后,用户应该会看到一个自定义对话框OldVersionDlg
,其中包含找到以前版本的信息,并将自动卸载。
但由于某些原因UpgradeVersion
元素设置的属性总是null
,当我在UI/Publish Dialog
中检查它时。
以下是必不可少的代码段。
Product.wxs :
<Product Id="*" Version="$(var.Version)" UpgradeCode="$(var.ProductId)"
Language="1033" Name="$(var.ProductFullName)" Manufacturer="$(var.Manufacturer)">
<Package Description="$(var.ProductDescription)" InstallerVersion="200" Compressed="yes"
Manufacturer="$(var.Manufacturer)" />
<Property Id="PREVIOUSVERSIONSINSTALLED" Secure="yes" />
<Upgrade Id="$(var.ProductId)">
<UpgradeVersion Minimum="1.0.0.0" Maximum="$(var.Version)"
Property="PREVIOUSVERSIONSINSTALLED"
IncludeMinimum="yes" IncludeMaximum="no" />
</Upgrade>
<InstallExecuteSequence>
<RemoveExistingProducts Before="InstallInitialize" />
</InstallExecuteSequence>
</Product>
WixUI_Wizard.wxs :
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="OldVersionDlg">PREVIOUSVERSIONSINSTALLED</Publish>
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="SetupTypeDlg">NOT Installed</Publish>
按钮Next不起作用。
我已检查PREVIOUSVERSIONSINSTALLED
后FindRelatedProducts
设置的日志。如果我在 Product.wxs 的条件下使用它,那么一切正常。但在UI配置中,它总是null
。
感谢您的帮助。
答案 0 :(得分:2)
问题是由 WixUI_Wizard.wxs 中的第二行引起的。出于某种原因,WiX总是使用它。因此,要实现先前版本的检查,我们需要从第二个条件中排除PREVIOUSVERSIONSINSTALLED
:
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="OldVersionDlg">PREVIOUSVERSIONSINSTALLED</Publish>
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="SetupTypeDlg">NOT Installed AND NOT PREVIOUSVERSIONSINSTALLED</Publish>