Вызов 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
Здравствуйте. В ссылке ниже вы найдете полезную справку об установщике izpack.
http://www.imrantariq.com/blog/?p=89
Ссылка ниже содержит подробный PDF-файл для установки с izpack.
http://www.imrantariq.com/blog/?attachment_id=112
ура
Имран Тарик