如何获得现有版本软件的IzPack tocheck?

我有一个应用程序,我们使用IzPack来创建安装程序。 安装程序在当前状态下工作正常,但是,我需要添加一些function,以便检查是否已安装现有版本的软件。

我知道IzPack使用CheckedHelloPanel支持这个开箱即用,不幸的是它只适用于Windows,因为它似乎依赖于Windows注册表。

有没有办法配置IzPack,以便它能够检测现有的安装

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


  • 假设只使用新安装程序安装软件
  • 仅限IzPack:请不要提出替代方案,因为我们现在无法改变
  • 如果你建议使用 ,请包含validation器类的代码示例,因为我已经考虑过这个,但不知道从哪里开始

我写这个是为了允许我的应用程序安装在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); } } 

然后安装程序有一个类似的部分

    au.com.codarra.ela.installer.JBossCheckerhasJBossEnv  true    au.com.codarra.ela.installer.JBossChecker hasJBossDir  true          
  

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

它仅适用于Windows,因为只有Windows具有注册表。 但是,在Linux应用程序中,传统上没有自定义的统一位置。 例如,您的运行脚本将放在bin文件夹中,您的二进制文件将放入/ opt,您的文档将放入/ var等。这个想法是用户选择的一个“your-app”目录并包含与应用程序相关的所有内容都是Windows概念。

所以无论如何,在Linux中解决这个问题的方法是在非用户定义的位置安装应用程序的各个部分。 这样,您就可以确切了解应用程序的安装位置。