在WIX中设置对话框和自定义操作的顺序

时间:2019-04-26 19:35:26

标签: 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)之间进行选择?

1 个答案:

答案 0 :(得分:0)

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

<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的值控制该流程,并且自定义操作完全不(直接)参与该流程。