我是使用Wix Installer的新手,我在尝试控制a时遇到了一些问题 我在其中一个对话框上的下一个按钮。我在Wix邮件列表上问了这个问题,但没有得到答案,所以我在这里试试。我拿了WixUI_Mondo.wxs并将其重命名为 将其修改为包含用于检查数据库连接的对话框。下边是 我修改过的WixUI_Mondo.wxs的片段:
<Publish Dialog="CheckDbConnectionDlg" Control="Next" Event="NewDialog"
Value=VerifyReadyDlg">1</Publish>
<Publish Dialog="CheckDbConnectionDlg" Control="Back" Event="NewDialog"
Value=WelcomeDlg">2</Publish>
现在在我的CheckDbConnectionDlg.wxs中,我有一个我正在尝试的下一个按钮 通过我在CustomAction中设置的属性来控制它的启用状态。 下面是我的CheckDbConnectionDlg.wxs片段和我的下一个按钮 试图控制。
<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17"
Text="Next">
<Condition Action="disable">
<![CDATA[CONTINUE <> "True]]>
</Condition>
<Condition Action="enable">
CONTINUE ="True"
</Condition>
</Control>
这是我设置属性的自定义操作:
[CustomAction]
public static ActionResult TestSqlConnection(Session testSession)
{
...
...
...
//If the connection is successful
testSession["CONTINUE"] = "True";
// Else set the session to False
testSession["CONTINUE"] = "False";
}
我的Product.wxs
<UIRef Id="WixUI_CustomUI" />
<Binary Id="SqlCustomAction" SourceFile="SqlCustomAction.CA.dll" />
<CustomAction Id=CA_testSqlConnection" BinaryKey="SqlCustomAction"
DllEntry="TestSqlConnection" Execute="immediate" Return="check" />
<InstallUISequence>
<Custom Action="CA_testSqlConnection" After="ExecuteAction" />
</InstallUISequence>
当我到CheckDbConnectionDlg的Next按钮时会发生什么 因为我希望它被禁用,在那个对话框中我有一个测试的按钮 连接到数据库,如果它是好的,我想要下一个按钮 启用,以便安装可以继续;否则,我希望它保持禁用状态。 如果连接成功,则不启用“下一步”按钮,但确实如此 我单击Back然后单击Next。
有人能告诉我如何纠正这个问题吗?
答案 0 :(得分:1)
这是Windows Installer的限制。它不是真正的事件驱动。条件仅在从对话框转到对话框时评估,而不是在对话框中发生某些事情时评估。标准的解决方法是在控制事件上设置条件,以防止转换到下一个对话框。