0

IzPack TargetPanelを使用すると、1つのターゲットディレクトリを選択できます。ただし、ユーザーが2つ(1つはアプリ用、もう1つはデータ用)を選択できるようにする必要があります。どうやってするか?

4

1 に答える 1

3

を作成し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で2つのパネルが定義されていることに注意してください。

ファイルをコピーする前にユーザーから変数を取得する必要があるため、UserInputPanels前に表示されていることを確認してください。InstallPanel

これは私のアプリのほんの一例です。私が使用した要素と属性の意味については、公式ドキュメントを参照してください。ユーザー入力に関連する多くの機能があります。

于 2012-05-25T12:19:16.963 に答える