投稿者 YuO  (社会人) 投稿日時 2010/7/24 00:57:41
バージョンアップとありますが,結局はどのインストーラーテクノロジを使うかに集約されると思うので,そういう方向で書きます。

インストーラーに関しては,Visual Studioでは2形式がサポートされています。
ひとつはClickOnce,もう一つはWindows Installerです。
# どちらかの形式にすることが推奨されます。自作はC++とWindows Installer SDKになりますが,そんな茨の道を行くことはお勧めしません。


・ClickOnce
発行ウィザードを使います。お手軽で,ネットワーク経由の自動アップデートなども可能です。
また,Express Editionsでもサポートされています。
ただし,Per Userインストールになり,インストール先も選択不可など,インストールに制限も加わります。

・Windows Installer
Windowsにおける標準的なインストーラー形式 (.msi) です。
Express Editions以外のセットアッププロジェクトを使ったインストーラーの作成で,この形式が作られます。
メジャーアップデートのみサポートですが,それが問題になることはあまりないと思います。
また,Windows Installer XML (WiX : http://wix.sourceforge.net/ ) というものを使うと,セットアッププロジェクトより細かくindows Installerを制御できます。
こちらをVS 2010に統合するためにはExpress Editionsでないバージョンが必要ですが,単体で実行する分にはExpress Editionsでも問題ありません。
# VS 2010に統合するためのバージョン (3.5) は現在βで,週次ビルドが出ています。

Windows Installer形式の場合は,自動アップデートはできませんが,Per MachineインストールもPer Userインストールも可能 (セットアッププロジェクトではPer Machineのみ) です。
例えば,SQL Server Express Editionsなども同時にインストールして設定することができます。
また,メジャーアップデートやマイナーアップデート,スモールアップデートといったアップデートの種類も用意されています。

ただ,マイナーアップデートによるパッチはテスト的に作ったことがあるけれど面倒でした。
VC++2008用で別の掲示板用で作った物ですが,
http://pub.idisk-just.com/fview/olN5vuUPjsD8DHIzezbv68Gvw-sWdttEUK_OQCcD_vSBOv29xlYGpH-XoEZxPqj0xU2esy1JRH-_RzgUF1XkCw.zip
とか,WiXの設定ファイルが面倒なことこの上ないことになりましたし,
1.0.0と1.0.1からパッチを作っても,1.0.2用のパッチは「1.0.0からのパッチ」+「1.0.1からのパッチ」の組み合わせになったりします。
結局,.mspではなく.msiで上書くのが正解だったりするという……。


MSDN: ClickOnce と Windows インストーラの使い分け
http://msdn.microsoft.com/ja-jp/library/ms973805.aspx
SITE: あなたのアプリにはどのインストーラが最適? - @IT (注:ClickOnceにはほぼ触れていません)
http://www.atmarkit.co.jp/fdotnet/vblab/compareinstaller/compareinstaller_01.html
SITE: WiX チュートリアル (日本語訳) — Windows Installer XML ツールセット入門
http://www.softark.net/wix/