【问题标题】:Wix CheckBox default stateWix CheckBox 默认状态
【发布时间】:2012-10-24 09:23:57
【问题描述】:

下面的对话框显示一个复选框,选中该复选框会启用“下一步”按钮。问题是当表单首次出现时,我无法将其初始状态设置为未选中。我尝试设置 CheckBoxValue = 1 但这也不起作用。

    <Dialog Id="DatabaseDialog" X="50" Y="50" Width="373" Height="287" Title="[ProductName]">
                <Control Id="EnableCheckBox" Property="DatabaseBackedUp" Type="CheckBox" X="20" Y="150" Width="290" Height="30" 
                         Text="Has the database been backed up?" CheckBoxValue="0" />
                <Control Id="NextButton" Type="PushButton" X="300" Y="261" Width="66" Height="18" Text="{\VSI_MS_Sans_Serif13.0_0_0}&amp;Next &gt;" TabSkip="no" Default="yes">
                    <Publish Event="EndDialog" Value="Return">DatabaseDialog_NextArgs=""</Publish>
                    <Publish Event="NewDialog" Value="[DatabaseDialog_NextArgs]">DatabaseDialog_NextArgs&lt;&gt;""</Publish>
                 <Condition Action="disable"><![CDATA[DatabaseBackedUp<> "1"]]></Condition>
                 <Condition Action="enable"><![CDATA[DatabaseBackedUp= "1"]></Condition>
                </Control>
</Dialog>

【问题讨论】:

    标签: wix windows-installer


    【解决方案1】:

    我就是这样做的,它对我有用

    房产:

      <Property Id="CHECKBOX" Secure="yes"></Property>
    

    复选框:

    <Control Id="CheckBoxId" Type="CheckBox"  Text="Use the proxy server for your LAN" Property="CHECKBOX" Width="180" Height="15" X="25" Y="103" CheckBoxValue="1"/>
    

    我相信这是可行的,因为您首先将链接到复选框的属性设置为空,因此它保持为空,如果单击它,则属性值等于 CheckBoxValue 设置的任何值。 (无论如何,这是我的逻辑..:))希望这会有所帮助

    【讨论】:

    • 谢谢!我定义了一个属性,但模糊地将其设置为任意值。
    • 虽然这可能有效,但我认为这是一种解决方法。我知道如果你没有在Property 上设置Secure 属性,那么你会得到一个构建警告"Property 'CHECKBOX' does not contain a Value attribute and is not marked as Admin, Secure, or Hidden. The Property element is being ignored." 设置Secure 属性确实会使这个警告消失,但它有自己的功能,可能会也可能会不需要(特别是,当使用提升的权限执行托管安装时,可以将属性传递到服务器端)。
    【解决方案2】:

    你已经定义了一个控件:

    <Control Id="EnableCheckBox"
             Type="CheckBox"
             Property="DatabaseBackedUp" 
             X="20" Y="150" Width="290" Height="30" 
             Text="Has the database been backed up?" 
             CheckBoxValue="0" />
    

    您没有提到您是否还在解决方案的其他地方定义了 DatabaseBackedUp 属性,但我假设您已经定义了这样的内容:

    <Property Id="DatabaseBackedUp" Value="0"></Property>
    

    您可能已尝试为 Value 设置其他值。但是,我相信复选框会将 any 值的存在解释为“我应该被检查”。

    但是,如果您没有设置Value 属性,那么您将收到警告:"Property 'CHECKBOX' does not contain a Value attribute and is not marked as Admin, Secure, or Hidden. The Property element is being ignored."

    设置这些属性之一将使警告消失,但会带来可能需要也可能不需要的其他行为。

    解决方法就是删除该属性。

    然后该复选框将找不到任何值并默认为未选中。检查它仍会按需要工作(即它将为属性创建并设置一个值)。

    我已经用 WiX v3.11.1 成功地尝试过了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-26
      • 2017-04-02
      • 2021-12-06
      相关资源
      最近更新 更多