我想自定义我的安装程序以在已安装先前版本时显示自定义对话框:在欢迎对话框之后,用户应该看到一个自定义对话框,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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
按钮Next不起作用.我检查了PREVIOUSVERSIONSINSTALLED之后设置的日志FindRelatedProducts.如果我在Product.wxs的条件下使用它,那么一切都OK.但在UI配置中它总是如此null.
谢谢你的帮助.
该问题是由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>
Run Code Online (Sandbox Code Playgroud)