自我更新计划

时间:2012-11-12 18:59:35

标签: java auto-update

所以,这是我现在已经有一段时间了。你怎么能拿一个程序,并让它'自动更新'。所以我们假设一个外壳检查Myserver.com/myProg/updates.xml(或其他一些资源)并检查以确保版本号相同。一旦我这样做,我该如何处理更新程序?

假设我的程序是一个简单的主要类,唯一的输出是:

System.out.println(“Hello World”);在更新时,它变成System.out.println(“Hello Java”);

如何在运行时将此更改置于其中?

注意:JNLP不适用于此,因为签名问题我无需扩展。

2 个答案:

答案 0 :(得分:9)

您需要2个“应用程序”:

  1. 检查更新并运行主应用程序的最小引导程序应用程序;
  2. 主要应用。
  3. 用户始终启动引导应用程序,而不是主应用程序(实际上用户不知道引导程序应用程序)。这是迄今为止我见过的最常见的模式。

    如果要在运行时进行自动更新,则需要将OSGI用作javabeats。但是,只有当你真的需要这个时才采取这条道路。我从未使用过OSGI,但我可以想象它是非常重要的。

    修改

    我没有具体的例子,但我可以想象

    1. 引导程序下载一些jar和配置文件
    2. 其中一个配置文件包含类路径中所需的文件(如果它选择了给定文件夹中的所有jar文件,这可以由您的应用自动完成。)
    3. 使用上一个列表,创建一个新的类加载器(请参阅示例here)以将jar文件添加到类路径中。
    4. 在新的类加载器中运行应用程序的主类。
    5. 抱歉,我不能在没有自己编写代码的情况下给你更详细的答案,但我会收取相应的费用:)。

答案 1 :(得分:2)

如果排除JNLP,我认为只有使用OSGI的解决方案才能实现。否则,即使在最简单的设计中,您也需要另一个程序来管理和下载当前程序的版本。