Java应用程序的安装程序

6

我想了解有哪些软件包可用于创建安装程序以分发应用程序。

目标应用程序是用Java编写的。安装程序必须能够:

  • 通过ant脚本进行编译
  • 在Linux(和Windows)上进行编译
  • 在Windows和Linux上运行
  • 检测/处理先前安装的版本的应用程序

我们目前使用IzPack,因为它可以完成上述所有操作,除了后者:它无法轻松地检测到先前安装的软件版本,这对我们来说是不可接受的。

还有其他符合要求的软件包吗?

谢谢!


“Related” 侧边栏中至少有三个重复项。 - Paul Tomblin
3
除了它们都没有解决我的问题的核心,也就是“检测/处理先前安装的应用程序版本”,没有其他有帮助的内容。已经进行了编辑以突出强调这一点。 - bguiz
1
事实上,即使在原始版本中,作者已经非常清楚地阐明了问题的核心。乍一看,任何东西都可能看起来像是重复的,但重要的是要理解问题的核心问题。 - John K
5个回答

5
我认为您可能缺少izPack的CheckedHelloPanel,根据在线文档,它检查注册表以查看是否已安装另一个版本,并询问您是否要安装第二个版本。
另一方面,如果您的意思是安装程序应该能够对先前版本进行原地升级,那么这是一个非常困难的问题,我还没有遇到过任何试图解决它的安装程序构建器。
编辑:在非Windows平台上,存在一个根本性问题。如果应用程序可以安装在非标准位置,则无法百分之百确定以前是否已安装了副本(相同或不同版本)。这可能是为什么CheckedHelloPanel仅支持在Windows上检测旧版本的根本原因。
话虽如此,izPack是开源的,因此,如果您可以找到在Linux上检测先前版本的方法,您可以修改CheckedHelloPanel来实现它。也许izPack会接受这个补丁。总之,在放弃您满意的工具之前,我建议您首先考虑这种方法。(特别是如果您想做的事情在Linux上根本无法完成。)

@Stephen C,我已经考虑过了,但是该功能仅适用于Windows,而我的安装程序需要在Windows上运行。此外,在Windows上,将扫描注册表以查找确定产品是否已安装的条目(http://izpack.org/documentation/panels.html#id4)。 - bguiz
@Stephen C,我也不需要它能够进行就地升级。假设第一个版本尚未安装,但是后续版本应该检测到已安装的先前版本。 - bguiz
+1和查看@Stephen C:我已经按照您的建议操作,除了扩展“CheckedHelloPanel”实际上并没有很好地工作(至少对于我的目标应用程序来说是这样)。但是我已经扩展了IzPanel以达到类似的效果,所以感谢您的建议! - bguiz

2

1

试试InstallJammer吧。它是免费的、开源的,而且应该能够完全满足你的需求。具体来说,它不仅可以检测先前的安装情况,而且还具有一些复杂的功能,可以检测多个先前版本并从中收集所需信息。

下载并尝试使用它,如果有任何问题,请访问论坛并提问。我通常会快速而完整地回答每个人的问题。0-]


@Damon,我已经查看了文档,在“检查以前的安装”和“添加安装信息”下,提到了“注册表”和“安装注册表”。我担心这些是(Windows)注册表的一部分。如果不是,那么这个注册表实际上在哪里? - bguiz
InstallJammer 在目标系统上保留了自己的安装“注册表”。即使在 Windows 系统上,这些信息也存储在磁盘上而不是 Windows 注册表中。每个安装在 IJ 注册表中存储一些基本信息,这就是用于检查先前安装的信息。如果需要,您还可以为每个安装存储自己的信息,因为安装程序只会存储它所需的信息。它是一个非常灵活的系统,因此我认为您会发现可以从中获得任何想要的信息。 - Damon

1

0

InstallAnywhere可以做到所有这些,而ISMP(InstallShield Muli-Platform)在Flexera仍在销售它时也可以做到所有这些,但它们是商业软件。我不知道是否有免费的等同物可以做到所有这些事情。


1
我们在工作中使用InstallAnywhere,但我不建议它。 - leedm777
1
我们在工作中也使用它...我的同事们正在努力说服管理层转移到另一个工具,这是一场噩梦,非常非常低效,需要大量时间来构建和测试。我认为下一个版本将采用InstallShield。 - Persimmonium
制作InstallAnywhere和InstallShield Multi-Platform的公司被第三方公司收购,并且它们的产品线被合并。最终结果是ISMP已经不再上市。他们仍然销售Windows本地安装的“InstallShield”产品,但不支持多平台。 - Ed.
我们之前公司作为ISMP的用户感到非常沮丧,这也是我们创建BitRock的原因 :) InstallAnywhere是一个更好的继承者,但仍然很痛苦。 - Daniel Lopez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接