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