我有一个应用程序,我们使用IzPack创建安装程序。安装程序在当前状态下可以正常运行,但是,我需要添加功能,使其能够检查是否已安装该软件的现有版本

我了解IzPack可以使用其 CheckedHelloPanel 开箱即用地支持它,不幸的是,它仅适用于Windows,因为它似乎依赖于Windows注册表。

有没有一种方法可以配置IzPack使其能够检测现有安装

我需要能够检测是否有一个,仅显示一条通知用户的消息...奖励要点,如何为用户提供触发现有安装的卸载程序的选项。

  • 假定将仅使用新的安装程序
  • 安装该软件
  • 仅限于IzPack:请勿提出其他建议,因为我们现在无法更改
  • 如果您建议使用 <validator> ,请包括 validator 类的代码示例,因为我已经考虑了这一点,但是不知道从哪里开始
  • 最佳答案

    我写这个是为了让我的应用程序可以通过jboss安装来安装。

    public class JBossChecker {
    
     private static boolean tempJBossEnv;
     private static boolean tempJBossDirectoryExists;
    
     static {
      String s = System.getenv("JBOSS_HOME");
      tempJBossEnv= (s!=null);
    
      if( tempJBossEnv) {
       File f = new File(s);
       tempJBossDirectoryExists= ( f.exists() && f.isDirectory());
      }
      hasJBossEnv =tempJBossEnv;
      hasJBossDir = tempJBossDirectoryExists;
     }
    
     public static boolean hasJBossDir;
     public static boolean hasJBossEnv;
    
     public static void main(String[] args){
      System.out.println("Jboss environment "+hasJBossEnv);
      System.out.println("Jboss directory "+hasJBossDir);
    
     }
    }
    

    然后,安装程序有一个类似
    <conditions>
         <condition type="java" id="jbossEnv">
                 <java>
                     <class>au.com.codarra.ela.installer.JBossChecker</class
                     <field>hasJBossEnv</field>
                 </java>
                 <returnvalue type="boolean">true</returnvalue>
     </condition>
    
     <condition type="java" id="jbossDir">
                 <java>
                     <class>au.com.codarra.ela.installer.JBossChecker</class>
                     <field>hasJBossDir</field>
                 </java>
                 <returnvalue type="boolean">true</returnvalue>
     </condition>
    
    </conditions>
    
    <installerrequirements>
     <installerrequirement condition="jbossEnv" message="Your system does not have the environment variable JBOSS_HOME set. Cannot update your system. Is XXXX installed on this system?" />
     <installerrequirement condition="jbossDir" message="Your system does not have a directory at the location in the environement variable JBOSS_HOME . Cannot update your system. Is XXXX installed on this system?" />
    </installerrequirements>
    
    <dynamicvariables>
     <variable name="INSTALL_PATH" value="${ENV[JBOSS_HOME]}"/>
    </dynamicvariables>
    
    <jar src="c:\dev\xxxx\build\installer.jar" />
    

    最后一点确保izpack将其添加到安装程序jar中。

    关于java - 如何让IzPack检查软件的现有版本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1845166/

    10-10 19:20