2010-03-19 10 views
8

Come si richiama un metodo da una classe Java da IzPack? I metodi statici sono OK, e ho bisogno di essere in grado di passare i parametri.Chiamare le classi Java da IzPack

Grazie!


informazioni Background:

Sto cercando di scrivere un installer IzPack che è in grado di rilevare un versioni precedentemente installate dell'applicazione. Dopo aver scoperto che in realtà non supporta questa funzione (tranne in Windows), penso che l'unico modo per farlo sia attraverso la scrittura di una classe Java e la chiamata da IzPack.

Tim Williscroft ha previously suggested questo metodo, che legge il valore di un campo statico di una classe:

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

Tuttavia, è possibile chiamare <java> da qualche altro che un tag <condition>? Voglio essere in grado di chiamarlo da un tag <variable>.
Inoltre, è possibile chiamare un metodo da una classe Java anziché leggere un valore di un campo? Voglio essere in grado di passare parametri alla mia classe.

risposta

0

è consigliabile utilizzare l'integrazione IzPack Ant

http://izpack.org/documentation/advanced-features.html#apache-ant-integration

e la didascalia compito Ant Java

http://ant.apache.org/manual/Tasks/java.html

+0

sto già usando Apache integrazione formica e il compito formica Java ... Avete suggerimenti specifici alla mia domanda? – bguiz

+0

Il pensiero è di avvolgere il callout nella tua classe Java usando Ant (anche se questo è solo ripetendo il suggerimento sopra ...) – gliptak

3

È possibile chiamare i metodi statici, ma io non credo che si possa passare parametri. Si potrebbe creare un nuovo 'tipo Condizione', ma non ho alcuna esperienza con questo quindi non posso confermare la flessibilità che fornisce ...

Quindi, non ho una risposta diretta, ma un altro suggerimento che potrebbe aiutare:

Tendo a passare qualsiasi post-elaborazione complessa su processi separati.

Avete studiato il pannello Elaborazione? È possibile avviare qualsiasi processo e passare le variabili.

ad es.

<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> 

L'ho usato per impostare i servizi e avviare immediatamente.Quel genere di cose. Assicurati che il tuo script esca pulito, altrimenti IzPack si bloccherà.

vedere qui: http://izpack.org/documentation/panels.html#processpanel

+0

+1 @amir: Aha Penso che il pannello di elaborazione sia una nuova funzionalità in IzPack, I don ' Penso di averlo notato prima ... Grazie per l'heads-up! – bguiz

+1

Avere un altro suggerimento .. dare un'occhiata a PackJacket. PackJacket esegue il wrapping di IzPack con una GUI per la creazione di programmi di installazione. Strumento davvero bello: http://packjacket.sourceforge.net/ – laher

0

Ho configurato con successo un programma di installazione IzPack che esegue un file "bat" (con un parametro) durante l'installazione per generare un codice richiesta di licenza. Per prima cosa dovevo assicurarmi che il file bat fosse copiato nel $ INSTALL_PATH scelto dall'utente, e nel file install.xml di IzPack ho aggiunto un ProcessPanel dopo InstallPanel (che è dove vengono copiati tutti i file, incluso quello "bat")). Il mio ProcessPanel.Spec.xml assomiglia a questo:

<?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>