问题 如何发布Java程序的补丁


我最近发布了一个跨平台的Java应用程序。为了分发,我们为Windows创建了一个NSIS安装程序,并使用了DMG for Mac(具有JarBundled .app文件)。我们还计划创建Linux RPM,DEB和tarball。

总共有5种不同的分配方法可供照顾。

我的问题是:修补在许多平台上运行的Java程序的最佳跨平台方法是什么?


2474
2018-02-11 19:06


起源



答案:


您是否考虑过简单地发布整个应用程序的新次要版本而不是补丁?由于您已经为各种平台的安装程序投入了时间,因此似乎可以避免为每个平台提出第二种方法的麻烦。除非您的应用程序非常大,否则我无法想到一个缺点,因为现在带宽相当便宜。


4
2018-02-11 21:43



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


答案:


您是否考虑过简单地发布整个应用程序的新次要版本而不是补丁?由于您已经为各种平台的安装程序投入了时间,因此似乎可以避免为每个平台提出第二种方法的麻烦。除非您的应用程序非常大,否则我无法想到一个缺点,因为现在带宽相当便宜。


4
2018-02-11 21:43



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


我会说那个 蚂蚁 脚本是执行任务的合理跨平台方式。如果你的补丁逻辑包括移动一些文件,更新jar,处理配置等,那么Ant可能适合你。您可以使用 AntInstaller 作为GUI。


4
2018-02-11 19:09



我觉得你误解了。我正在寻找一种向用户发送补丁的方法。使用此应用程序的用户将非常缺乏技术性,因此我们对他们的期望最高的是能够双击EXE或DMG文件。编辑:NM,看起来你懂:) - cdmckay
想想看,发布一个补丁就像发布一个完整的安装包。关于最终用户的一个不错的安装包装,在我的项目中,所有安装/补丁逻辑都是一个Ant脚本,我们使用AntInstaller和一个特定于平台的启动脚本(.bat / .sh)来引导AntInstaller。这可能不是最好的解决方案(.exe会更好),但是 - 只需2美分。 - Eli Acherkan
关于downvote的评论我很感激。 - Eli Acherkan


这可能不是你的选择,但我认为最好的方法是使用 Java Web Start

它提供独立于平台的机制,可自动下载软件的修补版本。


4
2018-02-11 19:14



我对此答案感到困惑,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文件为现有应用程序提供新的jar。 - Thorbjørn Ravn Andersen