我有一个软件包含不同的插件,可以在IzPack中安装时选择。这些插件为软件提供了不同的功能:输入,处理和输出。该软件至少需要一个输入和输出插件才能工作。 如何指定在PackPanel中选择至少一个提供特定功能的插件?
答案 0 :(得分:2)
我相信这是在izpack v5.0.0-rc5及更新版本中实现的。如果取消选择所有选项,PacksPanel将不允许您继续。
根据你的评论我会通过使用conditionvalidator来解决这个问题: 基本上为每个包添加条件:
<condition type="packselection" id="pack1inputselected">
<name>Pack 1 input</name>
</condition>
然后对包的组(输入,处理,输出)进行OR条件,例如:像这样:
<condition type="or" id="inputgroup">
<condition type="ref" refid="pack1inputselected" />
<condition type="ref" refid="pack2inputselected" />
</condition>
然后添加一个最终的AND验证条件(id是至关重要的,因为它必须始终以conditionvalidator word开始!conditionvalidator类将验证以conditionvalidator开头的所有条件。):
<condition type="and" id="conditionvalidator.packsselected">
<condition type="ref" refid="inputgroup" />
<condition type="ref" refid="processinggroup" />
<condition type="ref" refid="outputgroup" />
</condition>
在panel元素中将conditionvalidator添加到PacksPanel:
<panel classname="PacksPanel" id="panel.packs">
<validator classname="com.izforge.izpack.installer.validator.ConditionValidator" />
</panel>
有。每当条件验证器验证的条件(当点击下一个条件)不正确时(即如果您没有选择正确的包),它将抛出一条消息并且不允许您继续。您可以通过使用.error.message将字符串添加到CustomLangPack来更改消息(例如,在此示例中为conditionvalidator.packsselected.error.message)。