ClickOnceにて、アプリとともにAccessDatabaseEngineを配布する

C#でaccdbへ接続するようなプログラムを作っていたのですが、クラアントから利用するにはAccessDatabaseEngineが必要なため、各クライアントに事前にインストールする必要がありました。
さすがにすべてを手作業で行いたくないため、何か良い手段はないかを調べてみたところ、ClickOnceでアプリとともに配布できることが分かりました。
そのメモを残します。

■環境

■手順

1. AccessDatabaseEngineのダウンロード

以下に無印とX64の2種類がありますが、Access2010本体はx86であったため、無印のものをダウンロードしておきます。
Download Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント from Official Microsoft Download Center



2. Bootstrapper Manifest Generator for VisualStudio2008 (以下、BMG) のダウンロード

ClickOnceでアプリと同時に配布するには、必須コンポーネントをブートストラップに追加すれば可能なようです。
ブートストラップ パッケージの作成


上の記事の中ではXMLエディタでも可能とはあったものの、なるべく省力化をしたいため、もう一方のBMGを使います。
そのため、ダウンロード・インストールしておきます。なお、VS2008の表記はありますが、手元のVS2010でも問題なく利用できました。
Bootstrapper Manifest Generator - Home



3. BMGを管理者として実行する

管理者権限が必要なところを使うため、「管理者として実行」します。
ショートカットしかない場合には、以下のexeを管理者として実行します。

C:\Program Files (x86)\Microsoft\Bootstrapper Manifest Generator for VS2008\BMG.exe
4. BMGの設定と実行
  • BootstrapperのPathを設定

 Tools > Edit Machine Paths にて設定画面を開き、ブートストラップのパスを設定します。
 手元のVS2010では、以下のパスとなりました。

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper
  • 新規Package Manifestの作成

 File > New > Package Manifest より作成します。
 作成後、「Project Name」「Product Code」に値を入力します。この入力を忘れていると、BMGのBuildを実行するときにエラーとなります。

  • 「Add Install File」アイコンでインストールするファイルを追加

 分かりにくいアイコンですが、押すと言語とファイル名の入力欄が表示されますので、以下の通りに入力します。

項目
All Languages ●選択
Filename ダウンロードしたAccessDatabaseEngine.exeのパス
  • 「Display Name」の入力

 表示名を入力します。この入力も忘れてた時は、BMGのBuildを実行するときにエラーとなります。


  • 「Exit Codes」のデフォルト値の変更

 「Exit Codes」タブを開き、以下の項目を変更します。
 Resultの変更を忘れていると、AccessDatabaseEngineのインストールが成功したにもかかわらず、アプリのセットアップ時にエラーと認識されてしまいます。

Result Success (初期値:Fail)
Message (任意のメッセージ)
  • Buildの実行

 「Add Install File」アイコンの隣の、「Build」アイコンをクリックします。
 Buildが成功すると、「C:\Users\<ユーザー名>\Documents」以下にフォルダができます。



5. Buildしたものをブートストラップ先へコピー

上記のBuild実行してできたフォルダを、そのままブートストラップ先へコピーします。
VS2010の場合は、以下のフォルダにペーストします。

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages
6. VS2010で発行

Propertiesの発行タブの中にある「必須コンポーネント」ボタンをクリックすると、上記で作成した「AccessDatabaseEngine」のチェックボックスができているので、それをチェックします。
あとはそれを発行すると、クライアントへ配布することができます。