自動更新ライブラリを比較する

ClickOnceはどうも制限が多すぎるので、自動更新ライブラリを比較してみようと思います。ぱっと見有望そうなのは

かな。メモを追記していきます。とりあえず適当に文章で書いておこう。

ライセンス

どっちも商用利用は出来そう。

NuGet対応

どっちもしてないです。管理主体がNetSparkleはCodePlexでNAppUpdateはgithubだから、NetSparkleが先に対応しそうな勝手なイメージはあるけど。

UI

  • NetSparkleはライブラリ自体がUIを持っていて、更新履歴とかを出してくれる。多言語対応している。
  • NAppUpdateはライブラリは更新フレームワークのみ。サンプルとしてUIをつかったものは同梱されてた。

その他

ひとつずつ比較しにくいので、とりあえず、機能一覧を抄訳してみようかな。

NetSparkle機能一覧より

  • Windowsインストーラベースを必要とする更新ではなく、単体で更新機能を提供する
  • リリース情報を通知できる
  • IEコントロールを使って、更新ニュースを表示できる
  • 更新経過をユーザに通知できる
  • アプリケーション側にはコードを追加しなくても良いので、モジュールの更新削除はとても簡単
  • NetSparkleへの言及はなく、アイコンやアプリ名が自由に使える
  • DSA書名による高セキュリティなアップデートをサポート
  • スタートメニューを開発するためのUpdateChecker-Helperを持つ
  • 多言語対応

NAppUpdate機能一覧より

  • ライブラリは1DLLにまとまっており、.NET 2.0以上さえあればよし。
  • コールドアップデートをサポートしていて、実行中に準備をし、置き換えられないファイルがあってもリスタート時に置き換えてくれる。
  • 更新チェックや更新準備などのタイミングを好きなように設定できる。ロールバックできる。
  • アップデートはタスクとして表現されていて、現在はFileUpdateTask(ファイルをダウンロードして置き換える単純なタスク)のみが実装されている。インタフェースを実装すればオリジナルのタスクが追加できる。たとえば、レジストリのアップデート・データベースのアップデート(スキーマ更新・データ更新)、Luceneインデックスの更新、Diff形式のパッチなどなど。
  • タスクレベルでバックアップとロールバックがサポートされる。
  • 条件付きアップデートが出来る。すべてのタスクに条件を付けられる。条件に合わないタスクは無視される。この条件も、オリジナルの実装が可能。
  • 条件タイプがサポートされている。ファイルの存在チェック、バージョン、サイズ、日付、チェックサム、OSビット、レジストリのチェック、OSのチェック、.NETバージョンのような他の事前条件のチェックなどもできる。
  • Feedフォーマットは、Adobe Appcast形式と、オリジナルなNauXMLの二つをサポート。IUpdateFeedReaderを実装すれば、オリジナル形式も可能。
  • ソースのダウンロードも抽象化されている。規定でSimpleWebSourceとMemorySourceが実装されている。

まとめ

サイトとサンプルを見ての印象

  • NetSparkle
    • 暗号化に対応
    • 多言語対応しているがUI自体がライブラリに含まれてるのは余計な気がする
    • CodePlex なので .NET開発者に発見されやすい気がする
    • 更新はそれなりに頻繁にされてる。
  • NAppUpdate
    • コンパクトで、拡張性を考えると筋が良さそうなイメージ
    • バージョンがまだ若くて、これから更新が進んでくれるのかどうかは少し不安(僕が貢献できればそれに越したことはないが)。
    • CodePlex にくらべ .NET開発者には見つかりにくそう
    • 更新はそれなりに頻繁にされてる。