質問

プログラムを終了し、終了するプログラムから追加のコードを実行する最善の方法は何ですか?たとえば、プログラムが自己更新するための最良の方法は何でしょうか?

役に立ちましたか?

解決

いくつかのオプションがあります。

別のアプリケーション .exe を使用して自動更新を行うこともできます。おそらくこれが最良の方法です。

プログラムの実行中にその exe の名前を変更することもできます。したがって、更新サーバーからファイルを取得して置き換えることができます。次回プログラムを起動するときは、新しい .exe が使用されます。その後、起動時に名前を変更したファイルを削除できます。

他のヒント

そうでしょう 本当に ここでどの言語について話しているのかを知るのに役立ちます。PowerBuilder や Cobol でこれを行うための非常に優れたヒントをいくつか提供できると確信していますが、それはあなたが本当に求めているものではないかもしれません。ただし、Java について話している場合は、シャットダウン フックを使用できます。私にとっては非常にうまく機能します。

もう 1 つ考慮すべき点は、私が使用してきたほとんどの「主要な」アプリ (FileZilla、Paint.NET など) では、アップデーターによってアプリの以前のバージョンがアンインストールされてから、新しいバージョンの新規インストールが行われることです。アプリケーションの。

これが非常に大規模なアプリケーションでは機能しないことは理解していますが、小規模から中規模のアプリケーションではこれが「推奨」プロセスであるようです。

シャットダウンする前にプライマリプログラムが起動する2番目のプログラムを使わずにそれを行う方法がわかりません。プログラム 2 は変更をダウンロードしてインストールし、プライマリ プログラムを再起動します。

以前のアプリではこのようなことを行いました。[X] ボタンまたは [閉じる] ボタンからプログラムの終了 (.NET 2.0 の場合) をキャプチャし、ユーザーには見えないバックグラウンドでの更新プロセスを開始しました。サーバー (クライアント/サーバー アプリ) に更新があるかどうかを確認し、利用可能な更新がある場合は、BITS を使用してバックグラウンドでダウンロードします。次にアプリケーションを開いたときに、新しいバージョンがあることを認識し (フラグを設定しました)、ユーザーに新しいバージョンを警告するメッセージと、追加された新機能を表示したい場合にクリックするボタンがポップアップ表示されます。このバージョンに。

更新を実行するために実行されるセカンダリ アプリがある場合は、より簡単になります。「アップデーター」アプリを実行し、その中で他のプロセスが終了するのを待ちます。通常のアプリの DLL などにアクセスする必要があり、更新も必要な場合は、既に更新された DLL を使用して 2 番目の場所からアップデーターを実行して、元の場所で DLL が使用されないようにすることができます。

.NET アプリケーションを作成している場合は、ClickOnce の使用を検討してください。かなりのカスタマイズが必要な場合は、他の場所を探すことをお勧めします。

更新を実行する外部プロセスがあります。更新を見つけると、それを 2 番目のフォルダーにダウンロードし、メイン アプリケーションが終了するのを待ちます。終了時に、現在のファイルがすべて置き換えられます。プライマリ プロセスは、4 時間ごとに更新プロセスを開始するだけです。更新プロセスはプライマリ アプリの終了を待機するため、プライマリ アプリは更新アプリケーションを起動する以外に特別な処理を行う必要はありません。

これは副次的な問題ですが、独自の更新プロセスを作成することを検討している場合は、(1) ダウンロード時に保存し、(2) 更新サーバーからプルする 1 つのファイルを提供するために、何らかの圧縮を使用することを検討することをお勧めします。 。

それが理にかなっていることを願っています!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top