5

我想自定义我的安装程序以在已安装先前版本时显示自定义对话框:欢迎对话框后用户应该看到一个自定义对话框OldVersionDlg,其中包含找到先前版本并将自动卸载的信息。

但是由于某种原因,UpgradeVersionnull我在UI/Publish Dialog.

以下是基本的代码片段。

产品.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>

下一步按钮不起作用。我已经签入了PREVIOUSVERSIONSINSTALLED之后设置的日志FindRelatedProducts。如果我在Product.wxs的条件下使用它,那么一切正常。但在 UI 配置中它始终是null.

谢谢你的帮助。

4

1 回答 1

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>
于 2012-08-07T07:37:27.147 回答