代码之家  ›  专栏  ›  技术社区  ›  bguiz

从IZPACK调用Java类

  •  8
  • bguiz  · 技术社区  · 15 年前

    如何从IzPack调用Java类的方法?静态方法可以,我需要能够传递它的参数。

    谢谢您!


    背景信息:

    我正在尝试编写一个izpack安装程序,它能够检测以前安装的应用程序版本。在发现它并不真正支持这个特性(除了Windows)之外,我认为唯一的方法是通过编写Java类并从IZPACK调用它。

    蒂姆·威利斯克罗夫特 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类中的方法而不是读取字段的值?我想把参数传给我的班级。

    4 回复  |  直到 8 年前
        1
  •  3
  •   laher    14 年前

    您可以调用静态方法,但我认为您不能传入参数。 你 能够 创建一个新的'条件类型',但我没有这方面的经验,所以我无法确认它提供的灵活性…

    所以,我没有直接的回应,但另一个可能有帮助的建议是:

    我倾向于将任何复杂的后处理传递到单独的进程。

    你调查过处理小组吗? 您可以启动任何进程,并传入变量。

    例如

    <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

        3
  •  0
  •   Muhammad Imran Tariq    14 年前

    你好 在下面的链接中,您将找到一个关于izpack安装程序的很好的帮助。

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

    下面的链接包含一个详细的pdf文件,用于制作izpack安装程序。

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

    干杯

    伊姆兰塔里克

        4
  •  0
  •   Guillem    8 年前

    我已经成功地配置了一个izpack安装程序,它在安装过程中执行一个“bat”文件(带有一个参数)来生成许可证请求代码。首先,我必须确保bat文件被复制到用户选择的$install_路径,然后在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>
    
    推荐文章