installation - 避免使用 WiX 安装程序中的条件进入下一个对话框

标签 installation wix windows-installer

有谁知道我是否/如何在满足特定条件时阻止基于 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>

CheckPortNumber 指的是:
<Binary Id="IISCA" SourceFile="binaries/MyCustomActions.IIS.CA.dll" />
<CustomAction Id="CheckPortNumber" 
              BinaryKey="IISCA" 
              DllEntry="IsFreePort" 
              Execute="immediate" />

此外,在其他地方,我们有这样的声明:
<Publish Dialog="SelectIISApplicationPoolUserDialog" 
         Control="Next" 
         Event="NewDialog" 
         Value="SetSqlServerConnectionDialog">ISPORTFREE</Publish>

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

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

最佳答案

您需要设置 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>

关于installation - 避免使用 WiX 安装程序中的条件进入下一个对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1747765/

相关文章:

wix - 使用初始 IIS 设置安装 Web 应用程序;使用 WiX,需要升级文件,不更改 IIS 设置

wix - 在 WiX 中包含许多文件,但未一一列出。

wix - 为 WiX Burn 捆绑多个支持文件

wix - 如何以编程方式读取 MSI 文件中的属性?

installation - 如何使用 Inno setup 修改 machine.config?

windows - 有没有办法避免程序文件中自动运行应用程序的 UAC?

java - 如何让 Java 应用程序获取自身的最新版本?

wix - 在 WiX 中运行自定义操作之前设置环境变量

c# - 从 WiX 安装程序传递标志以合并模块?

ubuntu - pycuda在ubuntu上安装错误:/usr/bin/ld: cannot find -lcuda