避免使用WiX安装程序中的条件继续进行下一个对话框

Pet*_*ter 4 installer windows-installer wix

有没有人知道在满足某个条件时是否可以阻止基于WiX的MSI安装程序进入下一个对话框?我有以下代码:

<Dialog Id="SelectIISApplicationPoolUserDialog" Width="370" Height="270" Title="$(var.ApplicationPoolUserDialogTitle)">
  <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)">
    <Publish Property="APPLICATIONPOOLUSER" Value="{}">WEBSITE_APPLICATIONPOOLUSERTYPE = "local"</Publish>
    <Publish Property="APPLICATIONPOOLUSER" Value="1">WEBSITE_APPLICATIONPOOLUSERTYPE = "domain"</Publish>
    <Publish Event="DoAction" Value="CheckPortNumber">1</Publish>
  </Control>
Run Code Online (Sandbox Code Playgroud)

CheckPortNumber指的是:

<Binary Id="IISCA" SourceFile="binaries/MyCustomActions.IIS.CA.dll" />
<CustomAction Id="CheckPortNumber" 
              BinaryKey="IISCA" 
              DllEntry="IsFreePort" 
              Execute="immediate" />
Run Code Online (Sandbox Code Playgroud)

此外,在其他地方,我们有这个声明:

<Publish Dialog="SelectIISApplicationPoolUserDialog" 
         Control="Next" 
         Event="NewDialog" 
         Value="SetSqlServerConnectionDialog">ISPORTFREE</Publish>
Run Code Online (Sandbox Code Playgroud)

当我运行安装程序并进入对话框以选择应用程序池用户时,我单击下一步.然后,自定义操作将检查端口号并设置ISPORTFREE变量.但是,无论ISPORTFREE的结果如何,都不会显示下一个对话框.但是当我第二次单击"下一步"时,将显示下一个对话框.

所以我想要的是:当我点击下一步并且正在使用输入的端口号时,我收到警告并且不进入下一个对话框.如果未使用,我将继续下一个对话框.

sas*_*ont 9

您需要进行设置,Publish/@Order以便按正确的顺序评估所有内容.

像下面这样的东西应该可以工作:

<Publish Dialog="MyDlg" Control="Next" Event="DoAction" 
         Value="SomeAction" Order="1">1</Publish>
<Publish Dialog="MyDlg" Control="Next" Event="SpawnDialog" 
         Value="MyWarningDlg" Order="2">Not CONDITION</Publish>
<Publish Dialog="MyDlg" Control="Next" Event="NewDialog" 
         Value="MyOtherDlg" Order="3">CONDITION</Publish>
Run Code Online (Sandbox Code Playgroud)