如何从IzPack的Java类调用方法?静态方法没问题,我需要能够传递参数。
谢谢!
背景资料:
我正在尝试编写一个能够检测以前安装的应用程序版本的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 :(得分:3)
您可以调用静态方法,但我认为您不能传入参数。 你可以创建一个新的'条件类型',但我对此没有经验,所以我无法确认它提供的灵活性......
所以,我没有直接回应,但另一个可能有帮助的建议:
我倾向于将任何复杂的后处理传递给单独的进程。
你有没有调查过处理面板? 您可以启动任何流程,并传入变量..
e.g。
<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
答案 1 :(得分:0)
考虑使用IzPack Ant集成
http://izpack.org/documentation/advanced-features.html#apache-ant-integration
和Ant Java标注任务
答案 2 :(得分:0)
您好 在下面的链接中,您将找到关于izpack安装程序的一个很好的帮助。
http://www.imrantariq.com/blog/?p=89
下面的链接包含一个详细的pdf,用于安装izpack。
http://www.imrantariq.com/blog/?attachment_id=112
欢呼声
Imran tariq
答案 3 :(得分: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>