【问题标题】:Wix: show custom dialog if previous version foundWix:如果找到以前的版本,则显示自定义对话框
【发布时间】:2012-07-31 06:45:29
【问题描述】:

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

但由于某种原因,当我在UI/Publish Dialog 中检查它时,UpgradeVersion 元素设置的属性总是null

这里是基本代码sn-ps。

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>

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

感谢您的帮助。

【问题讨论】:

    标签: wix wix3.5


    【解决方案1】:

    问题是由 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>
    

    【讨论】:

    • 另一种解决方案是添加 Publish/@Order 属性,并将第一个对话框设置为 Order="1",将第二个对话框设置为 Order="2"。可能发生的情况是两个 Publish 事件条件都被评估为 true,因此 MSI 安装程序选择了第一个定义的 Publish 操作。通过添加 Order,这会告诉安装程序在两个 Publish 事件都具有真实条件时执行哪个操作。需要注意的是,Order 事件是反直觉的,当两个条件都为真时,它实际上是较高的 Order 值。您可以将其更多地视为权重,其中权重越大。
    • @kirmir 在哪里可以找到文件 WixUI_Wizard.wxs? IT 应该附带安装 WiX 吗?我找不到它了。你知道如何在 3.10 版本中使用它吗?
    • @micmica,这个文件是手动创建的,它描述了对话框的顺序。当被问到问题时,我使用了 3.5 版。不知道较新的版本,但我相信应该没有任何区别。
    • @kirmir 谢谢你的回答。您能否告诉我是否需要包含一些 dll,因为我得到:未解析的符号引用:OldVersionDlg?
    • @micmica,OldVersionDlg 也是我的自定义对话框。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多