Wix:如果找到以前的版本,则显示自定义对话框

时间:2012-07-31 06:45:30

标签: wix wix3.5

我想自定义我的安装程序,以便在安装以前版本时显示自定义对话框:在欢迎对话框后,用户应该会看到一个自定义对话框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不起作用。 我已检查PREVIOUSVERSIONSINSTALLEDFindRelatedProducts设置的日志。如果我在 Product.wxs 的条件下使用它,那么一切正常。但在UI配置中,它总是null

感谢您的帮助。

1 个答案:

答案 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>