在 WIX 中设置对话顺序和自定义

Set sequence of dialogs and customization in WIX

我正在 Wix 中编写一个安装程序,并需要以下顺序,其中混合了对话框和自定义操作的顺序。有两种情况。

场景一:用户安装软件试用:

  1. 欢迎(对话)
  2. 许可协议(对话框)
  3. 在我的网站上注册安装(自定义操作),网络服务器响应新用户(试用期)。
  4. --
  5. --
  6. 完成安装(对话框)

第二种情况:用户已经使用了试用期的软件,必须输入授权码才能完全安装。新步骤标有 *.

  1. 欢迎(对话)
  2. 许可协议(对话框)
  3. 在我的网站上注册安装(自定义操作),* Web 服务器响应旧用户(需要许可证)。
  4. *键入许可证密钥(对话框)
  5. *在 Web 服务器上验证许可证密钥(自定义操作)。
  6. 完成安装(对话框)

这两种情况的不同之处在于 Web 服务器在第 3 步中的响应方式。重要的是第 3 步在接受许可条款之后进行。

我对对话框 运行 没问题,我可以 运行 自定义操作。但我不知道如何混合它们的顺序。我一直在使用 Nick Ramirez WIX Cookbook,但我看不到它涵盖了主题。

问题 1:如何混合对话框序列和自定义操作?

问题 2:自定义操作(第 3 步)的结果如何用于在两个不同的对话框(第 4 步或第 6 步)之间进行选择?

经过反复试验,我找到了解决问题的方法:

<Property Id="INSTALL_WEB_RESPONSE" Value="NO" />
<UI Id="UIFlow">
   <Publish Dialog="LicenseAgreementDlg" Control="Next" Event="DoAction" Value="CA_Licens">LicenseAccepted = "1"AND INSTALL_WEB_RESPONSE = "NO"</Publish>
   <Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="MyCustomDlg">LicenseAccepted = "1" AND INSTALL_WEB_RESPONSE = "OVERSKREDET"</Publish>
   <Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">LicenseAccepted = "1" AND INSTALL_WEB_RESPONSE = "GEMT"</Publish>
</UI>

接受许可协议(Control="Next")后,有三个选项。

首先你要运行一个自定义动作"CS_Licens",这个动作改INSTALL_WEB_RESPONSE属性。根据 INSTALL_WEB_RESPONSE 属性 的更改,安装程序会以某种方式跳回到许可协议对话框并选择一个新的下一个事件:

Event="NewDialog" Value="MyCustomDlg"

Event="NewDialog" Value="VerifyReadyDlg"

换句话说:属性 INSTALL_WEB_RESPONSE 的值控制流程,自定义操作根本不(直接)参与流程。