Вызов Java-классов из IzPack

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

Спасибо!


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

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

Тим Вилликрофт ранее предложил этот метод, который считывает значение статического поля класса:

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

4 ответа

Вы можете вызывать статические методы, но я не думаю, что вы можете передавать параметры. Вы можете создать новый "Тип условия", но у меня нет опыта с этим, поэтому я не могу подтвердить гибкость, которую он обеспечивает...

Итак, у меня нет прямого ответа, но есть еще одно предложение, которое может помочь:

Я склонен передавать любую сложную постобработку отдельным процессам.

Вы исследовали панель обработки? Вы можете запустить любой процесс и передать переменные.

например

<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

Я успешно настроил установщик IzPack, который во время установки выполняет файл "bat" (с одним параметром) для генерации кода запроса лицензии. Сначала я должен был убедиться, что файл 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>

Рассмотрите возможность использования интеграции IzPack Ant

http://izpack.org/documentation/advanced-features.html

и задача вызова Ant Java

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

Здравствуйте. В ссылке ниже вы найдете полезную справку об установщике izpack.

http://www.imrantariq.com/blog/?p=89

Ссылка ниже содержит подробный PDF-файл для установки с izpack.

http://www.imrantariq.com/blog/?attachment_id=112

ура

Имран Тарик

Другие вопросы по тегам