InstallShield 2011 Limited Edition

.NET FrameworkベースのWindows フォーム アプリケーションのインストーラーを作った時の話。


まずは環境から。


OS: Windows7 Pro (32bit)
IDE: Visual Studio 2010 Pro
フレームワーク: .NET Framework 4.0 Full
開発言語: Visual Basic
インストーラー: InstallShield 2011 Limited Edition

InstallShieldのLimited Editionは、VS2010のPro以上なら無料で使えるので助かります。今回初めて使ったのですが、パッと見分かりやすくてホホホィっとインストーラーが作れちゃいます。


http://www.atmarkit.co.jp/fdotnet/chushin/introwinform_12/introwinform_12_02.html


が、普通にアシスタントに沿って進めてコンパイルすると、こんな警告が出ます。

  • 6245: One or more of the project's components contain .NET properties that require the .NET Framework. It is recommended that the release include the .NET Framework.

.NET Frameworkに依存しているファイルをインストールするから、セットアップにも.NET Framework含めるのオススメ」って事なんだけど、警告だけなので無視しても問題はない。けど、今回はまさに、これをするためにインストーラーに手を出したわけでして。

で、この警告をダブルクリックして出てくる解決手順を試そうとしたけど、ドキュメントが古いのか手順中の該当項目が存在しない。Webでアレコレ検索してもヒットしない。もしかして、Limited Editionじゃ.NET Frameworkを含めることが出来ないのかしら、などと想像は膨らむ一方。


で、セットアッププロジェクトを隅から隅まで舐め回したところ、ようやく見つけました。ソリューションエクスプローラーで、


2 Specify Application Data
└Redistributables


です。
分かりにくい。アシスタント内に含めるかどうか質問してくれても良さそうだけど。


これで該当項目にチェックを付ければ解決、かと思いきや、また別の問題が。選択した再頒布パッケージがない場合は、自動でダウンロードしてくれる親切設計なのですが、そのダウンロードが出来ないと言われてしまう。「Administratorでやってるかい?」と書かれてたので、Adminでやってみたり、通信設定見直したりしたけどダメ。ググってみたところ、ダウンロード先のフォルダに書き込み権限が無いのが原因とのこと。良く見たらProgram Files下だし。なぜUAC出さないし・・・あまりお行儀は良くないけど、一般ユーザーに書き込み権限与えたところ、正常にダウンロードしてくれました。


C:\Program Files\InstallShield\2011LE\SetupPrerequisites


念のため、ISLEのオプションで指定されている2つのフォルダにも同じ対処をしておきました。私の環境では、これらのフォルダ。


C:\Program Files\InstallShield\2011LE\Objects
C:\Program Files\Common Files\Merge Modules


余談:オプションでPrerequisitesフォルダを変更できるけど、元のフォルダのファイルを全部移動する必要があるっぽい?(未確認)

めでたしめでたし。


2012/06/07追記
どうにも取り回しが悪いので、現在はVSのセットアッププロジェクトを使うことで落ち着いています。私の用途ではこちらで十分でした。