私は SQL Server Compact を好きで使っていたのですが、2013 ではサポートされなくなりました。とはいえ、作った C# のプログラムは動作するので、2012 以前で作ったプロジェクトを引き継いでいる個人のプロジェクトや仕事のプロジェクトでは気にしていなかったのですが、困った点が2点。
- Visual Studio 2013 で sdf ファイルにつないで、中身を見れない
- インストーラの作成で、ブートストラッッパーが無くて、SQL Server Compact のインストールが表示されない
- (たぶん)ClickOnce 発行でもブートストラッパーが見つからなくて、SQL Server Compact のインストールが表示されない
ユーザーからのご指摘をいただきまして、最新バージョンがうまく動いとらん、と。対応したので、その方法を記載します。
目次
Visual Studio 2013 で sdf ファイルを開く
拡張機能「SQL Server Compact/SQLite Toolbox」でいけます。
Channel 9 に紹介動画が上がっていますね。
Visual Studio 2013 でインストーラを作る
そもそも、Visual Studio 2013 ではインストーラが作れないですね。しかし、拡張機能「Visual Studio Installer Projects」を入れると、Visual Studio 2010 までと同様のインストーラが作れます。全く同じプロジェクトを開いてビルド出来ます。これは便利!
しかし、ここに落とし穴が。
Visual Studio 2013 は、2010 と違って、SQL Server Compact をサポートしていないので、ビルド時に「ブートストラッッパーが見つかりません」という警告が表示されて、正常にビルドされません。
私はこれに気付かず、そのまま出来たインストーラを公開してしまったので、ユーザー環境で動作しないという現象が発生しました。
実際には、インストール時に、SQL Server Compact がインストールされていないと、インストーラが起動する、という動作になるはずのところが、表示されずにそのまま進み、DBを使おうとしたときにエラーが発生する(SQL Server Compact が無いので動作しない)ということが起きます。
Visual Studio 2013 の ClickOnce 発行でも同様?
確認していないのでおそらくですが、ClickOnce 発行時にも、同様にブートストラッパーが見つからずに、SQL Server Compact が無ければインストールされる、という機能が使えないはずです。
Bootstrapper をコピーする
Bootstrapper はたぶん、マイクロソフトのサイトからダウンロード出来るはずなのですが、すいません、見つかりませんでした。(以前の Visual Studio にもちょいちょい同じ事があって、Visual Studio のバージョンが上がったときに既知の問題として、ダウンロードするか前の Visual Studio からコピーするように、リリースノートに書いてあったように思います)
なので、Visual Studio 2010 をインストールしている環境から、SQL Server Compact のブートストラッパーをコピーします。
コピー元:C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages
コピー先:C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\Bootstrapper\Packages
Windows Installer 3.1 は今時絶対に Windows に入っていると思いますが、同様に警告が出ているので、こちらも必要に応じてコピーします。
インストーラの必須コンポーネントチェックに表示されて、チェック出来ること、また、アイコンが<!>警告表示になっていないことを確認してビルドします。
インストーラを変更したときや ClickOnce で再発行するときは、バージョンを上げることを忘れずに。そうでないと Windows が前のモジュールをキャッシュしてインストールしてしまう場合があります。
これで解決です。クリーンな Windows 7(Hyper-V環境)を作成して動作確認しました。