如何为Java程序发布补丁

11

我最近发布了一款跨平台的Java应用程序。为了进行分发,我们为Windows创建了一个NSIS安装程序,为Mac使用了DMG(其中包含JarBundled .app文件)。我们还计划创建Linux RPM、DEB和tarballs。

总体而言,这是5种不同的分发方法需要维护。

我的问题是:对于运行在许多平台上的Java程序来说,什么是最好的跨平台修补程序的方法?

3个回答

4

我认为使用Ant脚本是一种比较跨平台的方法来执行任务。如果你的补丁逻辑包括移动文件、更新jar包、处理配置等,那么Ant可能适合你。你可以使用AntInstaller作为GUI界面。


我想你误解了我的意思。我正在寻找一种向用户发送补丁的方法。使用此应用程序的用户将非常不熟悉技术,所以我们最多只能期望他们能够双击EXE或DMG文件。编辑:没事,看起来你明白了 :) - cdmckay
说起来,发布一个补丁基本上就像发布一个完整的安装包。关于为最终用户提供一个漂亮的安装包装器,在我的项目中,所有的安装/补丁逻辑都是一个Ant脚本,并且我们使用AntInstaller加上一个特定于平台的启动脚本(.bat/.sh)来引导AntInstaller。这可能不是最好的解决方案(.exe会更好),但这只是我的个人看法。 - Eli Acherkan

4

也许这对你来说不是一个选择,但我认为最好的方法是使用Java Web Start

它提供了跨平台的机制,可以自动下载软件的修补版本。


我对这个答案感到困惑,JWS 如何帮助应用补丁?您能详细说明一下吗? - kgrad
@Peter Lang:我在一家销售商业软件的公司工作。最后一件你想做的事情,除非你愿意放弃大部分潜在的OS X用户,否则就是使用Java Web Start。首先,Java在OS X用户中仍然有一个非常糟糕的声誉,而你宁愿隐藏这个事实,让他们看不出这是一个Java应用程序。然后当然JWS本身也有很多问题。 - SyntaxT3rr0r
@WizardOfOdds,Java在我们的OS X下运行良好。您能详细说明一下您在OS X下使用Java的经验吗?因为它很糟糕?一个分发包可以包含JNLP应用程序的初始种子,因此可以避免大型下载。 - Thorbjørn Ravn Andersen
@kgrad,Java Web Start允许通过更新服务器上的JNLP文件来为现有应用程序提供新的Jars。 - Thorbjørn Ravn Andersen

4

您是否考虑过仅发布整个应用程序的新小版本,而不是补丁?由于您已经投入了时间来为各个平台创建安装程序,因此似乎避免了为每个平台想出第二种方法所带来的很多麻烦。除非您的应用程序非常大,否则我想不到任何缺点,因为如今带宽相当便宜。


我们想要避免这样做的主要原因是,我们不想将安装程序分发给每个人,因为唯一保护我们免受盗版侵害的是一个简单的许可证密钥验证器。另一方面,补丁程序可以轻松地从我们的网站分发,因为没有主程序它就毫无用处。 - cdmckay
我同意 - 只需构建安装程序的新版本,这样用户就不必处理不同的安装方法。 - Karsten Silz
你如何分发你的原始应用程序? - Karsten Silz
1
但是应用补丁的人必须拥有已安装的原始应用程序,因此只需保护您的网站,使他们必须使用其产品序列号等登录才能访问补丁下载区域。 - Peter

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