2010-03-19 77 views
8

如何從IzPack的Java類調用方法?靜態方法是可以的,我需要能夠傳遞參數。從IzPack調用Java類

謝謝!


背景信息:

我試圖寫的IzPack安裝程序,它能夠檢測到應用程序的先前安裝的版本。在發現它並不真的支持這個功能(除了在Windows中)之外,我認爲唯一的方法是通過編寫一個Java類並從IzPack中調用它。

添Williscroft有previously suggested這種方法,讀取一個類的靜態字段的值:

<condition type="java" id="jbossEnv"> 
      <java> 
       <class>au.com.codarra.ela.installer.JBossChecker</class 
       <field>hasJBossEnv</field> 
      </java> 
      <returnvalue type="boolean">true</returnvalue> 
</condition> 

然而,就是它可以調用<java>從除<condition>標籤其他地方?我希望能夠從<variable>標記中調用它。
另外,是否可以從Java類中調用方法而不是讀取字段的值?我希望能夠將參數傳遞給我的班級。

回答

3

你可以調用靜態方法,但我不認爲你可以在參數傳遞。 你可以創建一個新的「條件式」,但我有這個沒有經驗,所以我不能肯定它提供了靈活性...

所以,我並沒有直接回應,但另一個建議可能會有所幫助:

我傾向於將任何複雜的後處理過程傳遞給單獨的進程。

您是否調查了處理面板? 您可以開始任何過程,並通過變量..

例如,

<processing> 
    <job name="do xyz"> 
    <os family="windows" /> 
    <executefile name="$INSTALL_PATH/scripts/xyz.bat"> 
     <arg>doit</arg><arg>$variable</arg> 
    </executefile> 
    </job> 
    <job name="do xyz"> 
    <os family="unix" /> 
    <executefile name="$INSTALL_PATH/scripts/xyz.sh"> 
     <arg>doit</arg><arg>$variable</arg> 
    </executefile> 
    </job> 
</processing> 

我用它來設置服務並立即啓動。那種事。只要確保腳本乾淨地存在,否則IzPack就會掛起。

在這裏看到: http://izpack.org/documentation/panels.html#processpanel

+0

+1 @amir:啊哈我認爲處理面板是IzPack中的一項新功能,我認爲我之前已經注意到了......感謝您的提醒! – bguiz 2011-04-16 10:34:30

+1

有另一個建議..看看PackJacket。 PackJacket用安裝程序的GUI包裝了IzPack。真的很好的工具:http://packjacket.sourceforge.net/ – laher 2011-04-16 10:47:39

0

我已經成功地配置一個的IzPack安裝程序,在安裝過程中執行一個「BAT」文件(具有一個參數),以產生許可證請求代碼。首先,我必須確保bat文件被複制到用戶選擇的$ INSTALL_PATH中,並且在IzPack install.xml中,我在InstallPanel後面添加了一個ProcessPanel(這是所有文件,包括「bat」之一)被複制)。我的ProcessPanel.Spec.xml看起來像這樣:

<?xml version="1.0" encoding="UTF-8" ?> 
<izpack:processing version="5.0" 
xmlns:izpack="http://izpack.org/schema/processing" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://izpack.org/schema/processing 
http://izpack.org/schema/5.0/izpack-processing-5.0.xsd"> 

<job name="initialize license"> 
    <executefile name="$INSTALL_PATH/initialize.bat" workingDir="$INSTALL_PATH" onError="fail"> 
    <arg>license</arg> 
    </executefile> 
</job> 
<onFail previous="false" next="false" /> 
<onSuccess previous="false" next="true" /> 
</izpack:processing>