web-dev-qa-db-ja.com

JavaFXアプリケーションの自動更新機能の実装

新しいクロスプラットフォームアプリケーションを作成しようとしています。主に、豊富なUIライブラリ(標準とサードパーティの両方)とネイティブデータバインディング機能のために、JavaFXを選択しました。 PPAPI Javaプラグインがないため(ChromeはChrome 42、現在ベータ版です)でNPAPIを廃止します)の両方の理由で、私のアプリケーションはネイティブパッケージを介してデプロイされますこれにより、ChromeのユーザーがWebStartを使用できなくなり、より「クラシック」なユーザーエクスペリエンスが実現するため、WebStartと自動更新はテーブルから外れます。

シナリオは次のようになります。

  1. アプリケーションが起動し、更新を確認します
  2. 更新が見つかった場合は、それらをダウンロードして一時フォルダーに入れます
  3. アプリケーションのシャットダウン時に、新しくダウンロードしたJARファイルを古いファイルの上に書き込みます
  4. 更新されたアプリケーションを自動的に再起動します

ただし、いくつかの質問が頭に浮かびます(最初は、これら2つですが、さらに多くの質問があればすぐに更新する可能性があります)。

  • そうしても安全ですか?アプリケーションのライフサイクルですでに使用されているJARの一部を上書きすると、JVMがどういうわけかおかしくなるリスクがありますか?
  • JavaFXアプリケーションを自動的に再起動する方法を見つけるのに苦労しています。それも可能ですか?

皆さんの助けに感謝します。

17

GetDown または pdateFX を見てください。 bootstrapダウンローダーを実装して、更新を確認し、ダウンロードして、更新されるとすぐにアプリケーションを起動します。

5
keuleJ

私は最近、Java 9のモジュールシステムで動作し、要件を満たす pdate4j を作成しました。

2
Mordechai

有料ですが、おそらく install4j を試すことができます。ここで私が最も気に入っている主な機能は、自動更新と、インストーラーを簡単に構成できる方法(Linuxを作成-deb、rpmインストーラー、Mac、ウィンドウインストーラー)であり、必要なjdkバージョンをパッケージ化して実行することもできます。アプリ(これは、ユーザーがアプリを使用する前に、最初にそのJavaバージョンをインストールする必要がないことを意味します)

しかし、それはあなたのニーズに少しやり過ぎに見えるかもしれません

2
Kiong