IzPack TargetPanel允许您选择一个目标目录。但是,我需要允许用户选择两个(一个用于应用程序,一个用于数据)。怎么做?

最佳答案

您可以创建UserInputPanel并从用户获取路径作为变量。然后,您可以在任何需要的地方使用变量替换。您必须添加userInputSpec.xml文件并定义自己的面板(任意数量)。要获取目录,请使用<field type="dir" ... >

我的应用程序中的示例userInputSpec.xml。我将mongoDB包含在安装程序中,并使用它来进行一些设置。

<userInput>
    <panel order="0">
        <createForPack name="MongoDB" />
        <!-- Other settings like port, ip, username, password-->
        <field type="staticText" align="left" txt="Select the catalogue where data will be stored." id="staticText.registry.db.data.text" />
        <field type="dir" align="left" variable="mongo.data.dir">
            <spec txt="Data directory" size="25" set="$INSTALL_PATH\data" mustExist="false" create="true" />
        </field>
    </panel>
    <panel order="1">
        <!-- definition of a second panel -->
    </panel>
</userInput>


您还需要将userInputSpec.xml作为资源包含在主安装文件中,并为您在UserInputPanel中定义的每个面板添加一个userInputSpec.xml元素。

像这样(在<installation>元素中:

<resources>
    <!-- other resources -->
    <res id="userInputSpec.xml"  src="userInputSpec.xml" />
</resources>


 <panels>
    <panel classname="HelloPanel"/>
    <panel classname="InfoPanel"/>
    <panel classname="LicencePanel"/>
    <panel classname="TargetPanel"/>
    <panel classname="TreePacksPanel"/>
    <panel classname="UserInputPanel"/>
    <panel classname="UserInputPanel"/>
    <panel classname="InstallPanel"/>
    <panel classname="ShortcutPanel"/>
    <panel classname="FinishPanel"/>
</panels>


请注意
        
我的userInputSpec中定义了两个面板

确保UserInputPanels出现在InstallPanel之前,因为在复制文件之前必须从用户那里获取变量。

这只是我的应用程序中的一个示例。请参阅官方文档,以了解我使用的元素和属性的含义。有许多功能与用户输入有关。

关于java - IzPack TargetPanel是否允许选择多个目录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10754062/

10-13 07:57