C#でExcelファイルを読み書きするプログラムと、そのプログラム(exe)を配布するためのインストーラを作ってみた。
それは、作成したExcelを使ったプログラムは、exeの配布だけでは他のPCでは動かないため。
Excel関連のDLLも一緒に配布する必要がある。
例えば、前に作成したサンプルアプリの場合、配布時は以下のDLLが必要。
- Microsoft.Office.Interop.Excel.dll
- Microsoft.Vbe.Interop.dll
- office.dll
- stdole.dll
⇒これ、後から気づいたけど実は認識誤り(.NET Framework 3.5までの話)。
.NET Framework 4以降ではDLL配布を不要にする方法がある。
説明も後記するので最後までちゃんと読んでね。
昔のVisual Studioではセットアッププロジェクト(Windows ベースのアプリケーションのmsiインストーラ)を作成する際、必要なDLLを自動で抽出してくれていた。
インストーラ付きで配布するのが嫌という場合、exeと抽出されたDLLだけを他PCにコピーしても動作する。
ただ、インストーラ無しで、抽出されたDLLを勝手に再配布するのはNGかも知れない。
あと、勿論、配布先PCにもMicrosoft Excelをインストールしておく必要はある。
じゃぁ、昔みたいにインストーラを作ればいい。
と、思ったら、、
Visual Studio 2012以降では、セットアップ プロジェクトが無くなり、ウィザードでインストーラ作成(ディプロイメント)することが出来なくなってしまったらしい。
・・・それは困った。
必要なDLLはMSDNとかに載っているかもしれないけど、前と同じような方法ができないか調べてみた。
すると、従来のセットアッププロジェクトに代わり、InstallShield Limited Editionを使ってインストーラを作れることが分かった。
でも、InstallShieldって有料じゃなの?
と思ったけど、このLimited Editionってのは簡易版で無料らしい。
ただ、無料版のVisual Studio Expressでは使えず、Visual Studio Professional以降じゃないと、InstallShield Limited Editionは使えないようだ。
という事で、おさらいも兼ねてVisual Studio 2013を使ってExcelを使ったプログラムと、インストーラをInstallShieldで作ってみることにした。