有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安装位置上的java Izpack toggel复选框

我在UserInput面板中有一个checkboxfor Windows服务安装,我想让它与安装路径相关

如果安装路径是本地驱动器,则应显示“安装windows服务”checkbox。 但是,如果安装路径是网络共享位置或安装的驱动器,则不应显示该复选框

为此,我尝试使用Dynamic variableCondition

以下是安装中的代码片段。xml

<conditions>
        <condition type="variable" id="install.path.condition">
            <name>$INSTALL_PATH</name>
            <value>//</value>
        </condition>
    </conditions>

    <dynamicvariables>
        <variable name="windowsservice" value="false" condition="install.path.condition" />
        <variable name="windowsservice" value="true" condition="!install.path.condition" />
    </dynamicvariables>

install_userinputspec中的目标字段。xml

<field align="left" type="check" variable="windowsservice" conditionid="install.path.condition" revalidate="true">
            <os family="windows"/>
            <spec txt="Install as Windows Service" id="windowsServiceCheckbox" true="on" false="off"
            set="false" />
        </field>

我尝试了我的运气得到这项工作,但它不会。请帮忙


共 (1) 个答案

  1. # 1 楼答案

    1. $INSTALL_PATH更改为INSTALL_PATH

      <name>INSTALL_PATH</name>
      
    2. 如果您不确定将为INSTALL_PATH输入的确切值,则使用带有嵌套<variable>标记的type="contains"代替type="variable"条件,例如:

      <condition type="contains" id="...">
          <variable>INSTALL_PATH</variable>
          <value>a substring to match in the value of INSTALL_PATH</string>
      </condition>
      

      IzPack doc contains cond.

    3. 使用revalidate="yes"作为<spec>标记的属性,而不是<field>标记本身

    4. 首先,试着让你的<condition>工作起来。一旦您测试了check字段,就可以直接链接到启用/禁用的条件,因此,在这种情况下,您不需要使用<dynamicvariables>,除非您需要它用于除checkbox-enable-disable-based-by-INSTALL\u路径之外的其他用途