.Netアプリを作る際に自動更新ライブラリを使ってみようと思い立ちいくつか試してみました。その時の感想をまとめておきます。
今作っているアプリのバージョンアップのため自動更新機能を使おうと思い、最初ClickOnceを調べてみました。私の理解では最低でもアプリのインストールが必要そうで、今のアプリはローカルディスクに実行ファイルを展開するだけで使えるようにしているためインストーラすらも用意していません。なので、別の方法を 検討してみました。
今回必要になるのは、
- インストーラを使わず、ファイルを展開するだけのアプリでも利用できる
- レジストリを汚さない
- もし可能ならば、変更ファイルのみアップデートする
という機能です。これに合うライブラリが無いか探してみました。
情報源として主にこちらのサイトを参考にさせていただきました。
なお、試用した感想とかも書いていますが、ちょっと触っただけなので間違っているところもあると思いますので、鵜呑みにせず参考程度にしてください。興味を持ったライブラリがあれば、ぜひご自分で試してみてください。
NetSparkle
ネットを調べると、OS X とかでSparkleという自動更新ライブラリがあり、それの.Net版のNetSparkleというのがあるのを知りました。早速、ダウンロードして試してみました。ライセンスはMITライセンスです。
使うのは簡単でした。サーバーの更新フィード情報をチェックして、当該ファイルをダウンロードします。このとき、ダウンロードしたファイルがインストーラになっていて、これを自動実行することを想定している感じです。
また、動作状況をレジストリに書き込んでおき、アップデートをスキップした場合に次から余計な更新チェックをしないなどの動作をするようです。
レジストリに書き込むので、少なくとも、今回の目的には合わなさそうです。
wyUpdate
wyUpdateそのものはオープンソースのようです。実際どう使うのかを調べていくと、設定ファイルをバイナリで記述する必要があるようです(こちらのページからダウンロードできるようです)。
有償製品のwyBuildを使えば、この設定ファイルも簡単に作れそうですが、そんな余裕も無いのでこれも残念ながら候補からはずれてしまいました。
NAppUpdate
NAppUpdateはオープンソースでApache License 2.0でライセンスされているので、使い勝手はよさそうです。
使い方はそれほど難しくなく、更新フィードにファイル単位で更新情報を書けばよいので、ファイル単位のアップデートにも使えそうです。おまけに、更新プログラム自身のアップデート(コールドアップデートと呼んでます)もできるそうです。
ただ、まだまだ開発途中という感じなので、ドキュメントが整備されておらず、ちょっと試しただけでも使い方に戸惑ったり、バグっぽい挙動があったりしました。
ソース追いかけてもいいや、と思えるなら使ってみるのもよさそうです。
結局
stackoverflowなどで調べるとほかにもいくつもライブラリはあるようでしたが、これだ!、というようなものは見受けられませんでした(もちろん、見落としてるだけかもしれませんが)。
なので、今回はNAppUpdateを選んで詳細に試してみようと思います。