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」以下にフォルダができます。