10

デスクトップSwingアプリを開発しましたが、自動更新機能を提供するための最良の方法を考えています。JavaWebStartがこれを提供することは知っていますが、ローカルファイルを読み取る必要があるため、jarに署名する必要があるため、ニーズに合わないと思います。さらに、JWSをサーバーにデプロイするには追加の作業が必要ですが、今は.jarをアップロードするだけで済みます。

私はこのアプローチについて考えてきました:

  • 最初のJAR(更新する必要はありません)はスプラッシュスクリーンをロードし、config.xmlで現在のバージョンをチェックし、サーバーのconfig.xmlと比較します。

  • サーバーのバージョンが新しい場合は、更新するかどうかをユーザーに確認してください。その場合は、新しい「main.jar」、新しい「config.xml」、新しいスプラッシュ/アイコンをダウンロードし、MD5SUMを確認して、古いファイルを新しいファイルに置き換えてください。

  • 「main.jar」を起動します。

車輪の再発明をしようとしているのか、それとも上記のパターンよりも優れたパターンがあるのか​​はわかりません。

4

1 に答える 1

5

同様のことをしました。https経由で入手し、jarファイルをダウンロードしました。新しいものが必要かどうかを知るには、ストリームのサイズを確認するだけです。理論的にはうまくいかないかもしれませんが、実際にはうまくいきました。jarが配置されているディレクトリのリストを取得し、それを解析して各jarをダウンロードすることで、さらに複雑になりました。そのため、jarの名前もハードコーディングされていませんでした。ただし、いくつかの醜い点があります。

最初は、新しいjarを開始するために新しいjvmプロセスを起動することでしたが、それほど単純ではありません。

次に、更新が途中で失敗した場合にjarを破損しないようにする必要があります。

最後に、このプロセスでブートストラップjarを更新する方法はありません。

于 2009-09-10T03:35:02.690 に答える