2012-05-25 62 views
0

IzPack TargetPanel允許您選擇一個目標目錄。不過,我需要允許用戶選擇兩個(一個用於應用程序,一個用於數據)。怎麼做?IzPack TargetPanel允許選擇多個目錄嗎?

+0

這似乎喜歡的事,更是下降到應用程序。本身。例如,我通常創建應用程序。該寫入數據爲'user.home',的子目錄或公共&通用處,其位置由JRE/OS(例如'Preferences','Cookies',所述JNLP API'PersistenceService' ..)選擇的。 –

回答

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中定義了兩個面板

確保您UserInputPanels,因爲你有你的複製文件之前得到來自用戶的變量InstallPanel之前出現。

這只是從我的應用程序的例子。查看官方文檔以瞭解我使用的元素和屬性的含義。有許多與用戶輸入相關的功能。

相關問題