如何在wix Edit控件上进行验证,并且只有在用户输入了一些字符串(不能为空)时才能使Next按钮可用
<Property Id="BASEKITPATH" Value=" " />
<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)">
<Condition Action="disable"><![CDATA[BASEKITPATH = " "]]></Condition>
<Condition Action="enable"><![CDATA[BASEKITPATH <> " "]]></Condition>
</Control>
使用上面的代码,当安装程序启动时,Next按钮变为ReadOnly,但是当我更改文本时,Next按钮没有任何变化,而Next则保持ReadOnly
似乎是什么问题
答案 0 :(得分:2)
这是底层Windows Installer的已知限制。它有这样的场景,其中ControlConditions不起作用,因为它们不验证在显示UI时已经改变的属性。
典型的解决方法是使用互斥的ControlEvents。一个用于调用SpawnDialog以显示验证错误消息,另一个用于转到下一个适用的对话框。
答案 1 :(得分:1)
如果有人查找例子,他可以在Wix的源代码中找到它。 打开“WixUI_InstallDir.wxs”并选中“InstallDirDlg”对话框。
代码示例:
<Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="LicenseAgreementDlg">1</Publish>
<Publish Dialog="InstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish>
<Publish Dialog="InstallDirDlg" Control="Next" Event="DoAction" Value="WixUIValidatePath" Order="2">NOT WIXUI_DONTVALIDATEPATH</Publish>
<Publish Dialog="InstallDirDlg" Control="Next" Event="SpawnDialog" Value="InvalidDirDlg" Order="3"><![CDATA[NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID<>"1"]]></Publish>
<Publish Dialog="InstallDirDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="4">WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1"</Publish>
<Publish Dialog="InstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish>
<Publish Dialog="InstallDirDlg" Control="ChangeFolder" Event="SpawnDialog" Value="BrowseDlg" Order="2">1</Publish>
检查“SpawnDialog”事件。