現在、いくつかのWCFサービス、ASP.NET MVCアプリケーション、管理ツール(Windowsフォームアプリ)で構成される非常に複雑なシステムを開発中です...それらの一部では、複数のサーバーでインスタンスが実行されます。このようなシステムに適した自動更新ソリューションを探しています。ほとんどの場合、ジョブを実行する個別の自動更新アプリケーション(サービス)、またはインストールされているすべてのインスタンスのバージョンを認識してリモートで更新を実行する集中管理アプリケーションが必要になります。この目的のために作成された、知っている、または経験した優れた製品/ライブラリはありますか?
5 に答える
個人的には、あらゆる種類の自動更新に非常に単純な方法を使用しています。
- インストーラーを持っている
- 新しいバージョンを確認します(単純なWebClientと、現在のAssemblyVersionと数値を比較します)
- バージョンが高い場合は、最新のインストーラーをダウンロードします(セキュリティ上の理由からSSL経由である必要があります)
- ダウンロードしたインストーラーを実行し、アプリケーションを閉じます。(この段階では、インストーラーで管理者になる必要がある場合は、管理者権限が必要です)
残りはインストーラーが処理する必要があります。このようにして、常に最新バージョンと最新バージョンのインストーラーを使用できます。
私は、以下を含む完全な更新ソリューションを提供する会社の創設者です。
- C# で書かれたオープン ソースのアップデータ wyUpdate [BSD ライセンス]
- .NET アプリのフォームに追加するだけのオープン ソースの AutomaticUpdater コントロール[LGPL ライセンス]
- wyBuild は、パッチのビルドとバージョンの管理に使用されます
wyUpdate は、Vista/Windows 7 UAC の問題のすべてと、複雑なソフトウェアを更新しようとするときに必然的に発生するすべてのファイル許可の問題を処理します。
また、オープン ソース プロジェクト向けに wyBuild の無料ライセンスも提供していますが、独自のアップデーターを構築するだけの場合は、ソース コードを自由に共食いすることができます。
そうは言っても、独自のアップデーターを構築したい場合は、次のヒントを参考にしてください。
独自のアップデーターの構築
上記のwyUpdateとAutomaticUpdaterのソース コードから始めるのがよいでしょう。あなたはそれを共食いし、あなた自身の目的のためにそれを使うことができます. 含まれているアルゴリズムの一部:
- 完全な Windows Vista / Windows 7 UAC サポート
- 制限されたユーザーが認証情報を持っているかどうかを確認して更新する機能
- 不安定な企業イナーネットのサポート。(企業で働いたことがある場合、これは本当の問題です)。
- ファイルの迅速な抽出、パッチ適用、およびインストール。
- レジストリのサポート。
- エラーまたはユーザーによるキャンセル時にファイルとレジストリをロールバックする
- 自己更新 (ファイルを残さない)
ファイル仕様もここにあります。
自動更新
自動であることが要件であるため、AutomaticUpdater コントロールを使用して自動化を行う方法を説明します。
名前付きパイプを使用して、スタンドアロン アップデーター (wyUpdate) とプログラムのフォームにある自動アップデーター コントロールとの間で通信します。wyUpdate は進行状況を Automatic Updater に報告し、Automatic Updater は wyUpdate に進行状況のキャンセル、ダウンロードの開始、抽出の開始などを指示できます。
これにより、アップデーターがアプリケーションから分離されます。
実際、私たちが使用している正確な名前付きパイプ C# コードは、少し前に書いた記事に含まれています: Multi-process C# app like Google Chrome。
これは、WinForms および WPF アプリに対する特定のニーズに対応するために私が作成したオープンソース ソリューションです。一般的な考え方は、可能な限り低いオーバーヘッドで最大の柔軟性を持つことです。
したがって、統合は非常に簡単で、ライブラリは同期操作を含め、ほとんどすべてを実行します。また、非常に柔軟で、どのタスクをどのような条件で実行するかを決定できます - ルールを作成します (または既存のものを使用します)。最後に重要なこととして、あらゆる更新ソース(Web、BitTorrent など) とあらゆるフィード フォーマットのサポートがあります。
コールド アップデート (アプリケーションの再起動が必要) もサポートされており、タスクに「ホット スワップ」が指定されていない限り、自動的に行われます。
これは、サイズが 70kb 未満の 1 つの DLL に要約されます。
コードはhttp://github.com/synhershko/NAppUpdateにあります(Apache 2.0 ライセンスの下でライセンスされています)
もう少し時間があれば、さらに拡張する予定ですが、正直なところ、現在サポートされていないものについては、自分ですばやく拡張できるはずです.
ファイルの「ホットスワップ」と必要に応じて「iisreset」タスクを使用して、WCF サービスと ASP.NET Web サイトの自動更新も同様に実行できるはずです。
Xcopy インストールを使用する可能性のある単純な WPF アプリケーションの場合、この AppUpdater モジュールを使用できます。シンプルな WPF アプリに更新機能を追加するのは、わずか数行のコードの 1 つのソース モジュールです。
それは無料です。