【问题标题】:"Automatic updates" for Java (desktop) application?Java(桌面)应用程序的“自动更新”?
【发布时间】:2010-09-23 06:10:59
【问题描述】:

对于某些 java(桌面)应用程序实现“自动更新”,您推荐什么系统?我还想要模块/插件安装和更新。想想 Eclipse 和 Firefox。

我知道 Eclipse RCP 的 OSGi 东西,而且 NetBeans RCP 也有一些东西。是否必须完全购买他们各自的 RCP 产品才能使用他们的模块和自动更新系统?

还有其他选择吗?

【问题讨论】:

    标签: java plugins desktop-application auto-update


    【解决方案1】:

    你看过Java Web Start吗?它会检查服务器上的更新模块并仅在需要时才下载它,否则会在客户端 PC 上本地缓存并从那里开始。

    【讨论】:

    • 我不太觉得 Java Web Start 是这里的答案。假设这是一个大型应用程序 - 类似于 Eclipse(IDE)和 Firefox 一样的应用程序“容器”。
    • Webstart 没问题,但有很多奇怪的问题。特别是如果您要安装多个版本或多次安装同一版本(这对于开发人员/QA 来说并不少见),而且很多事情都必须转到缓存查看器等。
    • 另外,如果你使用 webstart,用户可以随时打开 java 控制台,所以要小心你发送到 System.out/err 流的任何内容。
    • JWS 的问题在于安全管理器。它比普通的更严格。
    • 请注意,Java Web Start 传统上存在很多缓存问题。通过确保您部署的每个文件的每个版本都有一个唯一的 URL(例如,通过在 URL 中嵌入版本名称或版本号),您可以大有帮助。
    【解决方案2】:

    我相信 install4J 现在作为其安装构建器的一部分提供了此功能 (http://www.ej-technologies.com/products/install4j/overview.html) 我们一直想检查一下,但还没有机会。

    【讨论】:

    • 谢谢,这很有趣。可能将其用于“核心容器”,例如Eclipse 的 OSGi 插件?
    【解决方案3】:

    如果您不经常更新且带宽充足,Web Start 非常棒。

    如果没有,但是,您需要其他东西。我在一个项目中工作,我们经常更新和可怕的带宽。我们推出了自己的类文件服务器;启动代码将与服务器对话,以查看是否需要基于每个类进行更新。如果是这样,则已下载更改的类,并且应用程序继续正常运行。

    它实际上并不是非常复杂,所以如果现有工具不起作用,请不要害怕自己推出。

    【讨论】:

    • jardiff 表示只有差异需要下载,而不是全部。即使带宽很差也应该没问题。
    • @tom,你有这方面的经验吗?我想知道是否值得付出努力。
    • davetron,如何在一个 jar 文件中实现启动代码?类 diff 扫描没有问题,但启动是。下载更新后无法覆盖正在运行的 jar。
    • Tomáš:我们所做的(我很模糊,因为这是差不多 7 年前的事了 :) 是下载课程,并确保新课程在旧课程之前位于课程路径上。我们可以控制类路径,所以这不是问题。
    【解决方案4】:

    看看Equinox p2,这可能是您所说的“Eclipse RCP 的 OSGi 东西”... AFAIK 你需要 OSGi 化你的应用程序才能使用 p2(在至少意味着将您的整个应用程序变成一个大捆绑包)。

    【讨论】:

      【解决方案5】:

      它不像插件系统。但它具有桌面应用程序的更新和安装功能。您可以通过链接查看this

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-26
        • 2010-11-02
        • 2011-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多