控制Wix安装程序中的下一个按钮状态

时间:2011-01-23 20:39:49

标签: wix

我是使用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。

有人能告诉我如何纠正这个问题吗?

1 个答案:

答案 0 :(得分:1)

这是Windows Installer的限制。它不是真正的事件驱动。条件仅在从对话框转到对话框时评估,而不是在对话框中发生某些事情时评估。标准的解决方法是在控制事件上设置条件,以防止转换到下一个对话框。