Кто-нибудь знает, можно ли / как остановить установщик MSI на основе WiX для перехода к следующему диалоговому окну при выполнении определенного условия? У меня есть следующий код:
<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. Но когда я нажимаю Next еще раз, появляется следующее диалоговое окно.
Итак, что я хочу: когда я нажимаю «Далее» и введенный номер порта используется, я получаю предупреждение и не перехожу к следующему диалогу. Если он не используется, я перехожу к следующему диалоговому окну.