2010-03-19 4 views
8

Как вы вызываете метод из класса Java из IzPack? Статические методы в порядке, и мне нужно иметь возможность передавать его параметры.Вызов классов Java из IzPack

Спасибо!


Справочная информация:

Я пытаюсь написать установщик IzPack, который способен обнаружить ранее установленные версии приложения. Узнав, что он не поддерживает эту функцию (за исключением Windows), я думаю, что единственный способ сделать это - написать класс Java и вызвать его из IzPack.

Tim 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 вместо чтения значения поля? Я хочу иметь возможность передавать параметры в мой класс.

ответ

0

Рассматривают с помощью интеграции IzPack Ant

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

и выноски задачу Ant Java

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

+0

Я уже использую интеграцию apache ant и задачу ant Java. У вас есть предложения, касающиеся моего вопроса? – bguiz

+0

Мысль о том, чтобы обернуть выноску в ваш класс Java с помощью Ant (хотя это только повторяет предложение выше ...) – gliptak

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: Aha Я думаю, что панель обработки является новой функцией в IzPack, Думаю, я заметил это раньше ... Спасибо за хедз-ап! – bguiz

+1

Есть еще одно предложение .. взгляните на PackJacket. PackJacket обертывает IzPack графическим интерфейсом для инсталляторов. Действительно хороший инструмент: http://packjacket.sourceforge.net/ – laher

0

Я успешно настроил установки IzPack, который выполняет файл «летучая мышь» (с одним параметром) во время установки, чтобы сгенерировать код запроса лицензии. Сначала мне нужно было убедиться, что файл bat был скопирован на выбранный пользователем $ INSTALL_PATH, а в IzPack install.xml я добавил ProcessPanel после InstallPanel (где все файлы, включая «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> 
Смежные вопросы