IzPack TargetPanelを使用すると、1つのターゲットディレクトリを選択できます。ただし、ユーザーが2つ(1つはアプリ用、もう1つはデータ用)を選択できるようにする必要があります。どうやってするか?
質問する
1148 次
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 に答える