5

簡単に言えば、簡単で信頼性の高い自動更新をサポートするアプリケーションをどのように設計しますか?

どのように切り分けられるのか、さまざまな操作に興味があります。

編集:これはこの質問にリンクされています:自己破壊アプリケーション

4

2 に答える 2

5

対処する必要のある懸念事項:

  • 更新を行うアプリ自体が更新されている場合は、再起動するか、ファイルを所定の位置に移動するためにスタブを実行する必要があります(使用中のファイルのエラーを回避するため)。

  • Webリクエストを介してファイルを取得するために通信しているサービスが何であれ、実行しているインストール済みパッケージの現在のバージョンを知る必要があります。ファイルのURLリストを動的に作成し、ファイルを圧縮してクライアントの単一のURLに出力することもできます。それ以外の場合は、クライアントにURLリストを調べてもらい、各ファイルをプルします。各URLは、「copy」や「execute」などの操作に関連付けられます。

  • 取得した各ファイルを処理し、クライアントにインストールします。

  • 更新はアトミックである必要があります(操作の一部が失敗した場合にロールバックする機能)。部分的な状態のままにしたくない場合。

于 2012-04-11T15:59:06.780 に答える
3

Java Network Launch Protocol は、自動更新ソフトウェアの展開を容易にする優れた機能を果たします。このサイトの何人かが問題を報告していますが、古いバージョンの Java を使用しているか、JNLP ファイルを正しく設定していないことが原因である可能性があります。管理者としてログインしなくても、Mac と Windows、および職場の PC でうまく機能することがわかりました。ソフトウェアを効果的に「インストール」することができました。ユーザーの観点からは、私が彼女に新しいデスクトップ アプリを提供したようなものです。デスクトップにプログラム アイコンがあり、私のプログラムによって保存されたファイルがそれに関連付けられています。ウィンドウは適切なアイコンを与え、ダブルクリックすると開きます。しかし、彼女がプログラムを実行するたびに、JNLP は最初にローカルに保存された JAR ファイルを私のサーバーにあるものと照合し、彼女のファイルが私のサーバー上のファイルよりも古いかどうかをチェックします。ソフトウェアが更新されます。プログラムは、最初にすべてをダウンロードする必要がある場合を除いて、ネイティブの Windows アプリと同じくらい高速に起動します。

プログラムを自己破壊させるには、次の 2 つのオプションがあります。

  1. サーバー上のjarファイルを短くて役に立たないように変更してください。ユーザーがプログラムを起動して更新すると、プログラムが利用できなくなったことを示すダイアログ ボックスが表示されます。この方法で機能を無効にすることもできます。ただし、これはすべてのユーザーに一度に影響します。アプリが稼働するまでのタイム ラインが同じである異なるクラスのユーザーごとに、いくつかの異なる JNLP ファイルを作成できます。また、サービスに JNLP ファイルを生成させることもできます。ただし、それを無効にするための制御は、サーバー上の jar を変更することによって行われます。

  2. プログラムが開始されると、まず Web サービスにアクセスして、プログラムがまだ実行されていることを確認します。ユーザーが現在使用できる機能を関連付けるデータベース テーブルを作成できます。ユーザーが登録しない場合は、最初にプログラムを実行するときに何らかの方法で ID を作成し、それを db テーブルに配置して、設定 API を使用してクライアントのコンピューターに保存する必要があります。

JNLP を使用して更新を自動化することに慣れていない場合は、開始に役立つ背景情報を以下に示します。

JNLP ファイルは、アプリケーションがオンラインで保存されている場所と、アプリケーションを実行する必要がある JAR ファイルを記述した XML ファイルです。スプラッシュ スクリーン、デスクトップ アイコン、更新スタイル (常に確認する、プロンプトを表示せずに更新する、バックグラウンドで更新する)、プログラムに関連付けるファイルなど、アプリのさまざまなプロパティも指定されます。

JNLP 開発者ガイドを読んで、それを機能させる方法の詳細な手順を確認してください。

また、オンラインで多数の例を見ることができます。Chrome では、JNLP ファイルのデフォルトの動作は単に保存することです。他のブラウザーでは、右クリックして名前を付けて保存する必要がある場合がありますが、それは、派手な JavaScript ボタンではなく、ファイルへの直接リンクがある場合にのみ機能します。次に、例としてお気に入りのテキスト エディターで JNLP ファイルを開くことができます。
swing チュートリアルでは、JNLP ファイルを使用してコードを示します。

于 2012-04-11T16:08:27.007 に答える