2011-12-03 8 views
0
  1. アップデートを含むディレクトリをサーバーでチェックします。
  2. 現在のアプリケーションディレクトリにjarsをダウンロードします。
  3. アプリを再起動するようにユーザーに通知します。

私の心配は、Javaアプリケーションの実行中に古いファイルを上書きすることです。Java Swingセルフアップデータの作成方法(Java Web Start以外のソリューション)?

たとえば、myapp.jarなどのライブラリjarが更新されました。新しいバージョンを現在のアプリケーションディレクトリにダウンロードして上書きする必要があります。これを達成する方法はありますか?上書きすることはできますか?

+3

私は、この質問が私が締めくくりにしたあなたの以前の質問とは実質的にどのように異なっているか分かりません。これを閉じるための投票。 –

+0

は、これをなぜ閉鎖する必要があるのか​​説明が必要です。私の質問はhttp://stackoverflow.com/questions/4706153/how-to-write-a-self-updating-program-in-javaとどのように違うのですか? – KJW

+0

その質問は、JWS(1)を使った**明らかな**答えを除外しません。私はあなたがJWSを却下するには早すぎると感じています。もちろん、それが* I *がクローズのための質問にフラグを立てるのを選んだ理由です。私は誰にも話すことができません。 1)実際には、* [受け入れられた回答](http://stackoverflow.com/a/4706165/418556)*は "Use JWS" *になっています。 –

答えて

1

jarファイルを上書きすることはできません。それはおそらくLinuxでは動作しますが、間違いなくWindowsでは動作しません。

これを解決する1つの方法は、一時的な場所にjarsをダウンロードしてから、(JVMが起動する前に)起動するときに、一時的なjarsをアプリケーションのダウンロード場所に移動してから起動することです。注意:JARファイルの内容をダウンロードした後に何らかの形で確認して、ファイルが壊れていないことを確認することをお勧めします。 md5sumが動作します。

+0

JVMが起動していない場合、どのようにアプリケーションの場所に一時的なjarsを移動することができますか? – KJW

+0

実行可能なスクリプト、別のJarで動作する別のJVM。たくさんの方法があります。 – Bill

+0

なので、別のupdater.jarを作成してmyapp.jarから実行するようなことをする予定です。アップデートが検出された場合、myapp.jarを閉じて、必要に応じてファイルをダウンロードして更新するように要求します。 – KJW

2

これを達成する方法はありますか?

私はそう思います。しかし、それを働かせるあなたの仕事。そして真剣に、コンセンサスはあなたが車輪を再発明しているということです。

上書きできますか?

現在実行中のため、使用中のJARファイルを上書きすることはできません。

これを回避するにはさまざまな方法がありますが、ダウンロードや更新などのためのカスタムランチャーを用意してから、実際のアプリケーションを起動または再起動します。そして、基本的に、これはJNLPが行うことなので...あなたがホイールを再発明することを提案しているということです。

(*私は、これらの方法は私にはかなり分かりやすいと思いますが、あなたには分かりませんが、それがJNLPを使うほうが良い理由のもう1つです。