読者です 読者をやめる 読者になる 読者になる

★ The Tsuchinoko News 2 (つちのこ通信2) ★

重要な話から、どうでもいいことまで。ほとんど役に立たないことを書き連ねています。

【PC】InstallShield2012 で VC++2012のx86版 を同梱すると 64Bit版Win7でインストールされない件

筆者は最近 Visual Studio 2010 を触ることが減って Visual Studio 2012 の方ばかり触っている。これは VS2012のバグらしきものが修正され(UPDATE1,2)安定していることと、2010で作成したソースプログラムを2012 に持って行っても大丈夫だという確信が得られたことと、ひとえに 2012 の方が動作がサクサクしていることによる。

ただ 2010 までは搭載されていたセットアップ機能が 2012 ではなくなってしまい InstallShield2012 SpringLE版だけになり、こちらもずいぶん慣れてきたが、まだ悩むことが時々ある。今日ハマったのは いわゆる「前提条件」で Prerequisites。Redistributables(再配布)に関する設定であった。

筆者は XPユーザーのことも考えて、ほとんどが .NET 4.0 Client Profile の再配布可能パッケージをくっつけるのだが、今回は openCV と openCvSharp を DLL利用したため VC11(VC++2012)の再配布可能パッケージも”同梱”することになった。
32Bit OS ユーザー,64Bit OS ユーザー両方ともが困らないように 32Bit版(x86版)で作成したプログラムなもので、VC11(VC++2012)も32Bit版(x86版)の再配布可能パッケージを同梱しなくてはならない。

.NET4.0Client Profileは 32/64同じもので”いつも”通りなので問題はないが、VC11(VC++2012)の方で、かなりハマった。

64Bit の Windows 7 の時だけ、できあがったインストーラー(Setup.EXE)を起動しても、この32Bit版(x86版)VC11(VC++2012)再配布可能パッケージをインストールしてくれないのだ。
当然 openCV(openCvsharp)さんから怒られてしまう。コアDLLがない、VC++ランタイムがない、パスが通ってないなどなど。

いろいろと情報を調べていると、Install Sheild 2011 で バグがあったとの記事を見つけたのだが、2012では修正されているとのことで、また、VC10 などについてのことだったので、「これではない」「同じバグ?が 2012 で出るはずがない」と思い込んでしまったので、ますますハマった。

全然わからないので泣きそうになったので再度この記事をよくよく見直すと、どうやら 「 .prq 」ファイルに問題があるようだった。問題の?「 .prq」をメモ帳で開いてみると、よくある xml文書で、再配布時のルールブックのような記述がされているような気がした。

そこで、他の「.prq」ファイル。主に x64版と x86版があるようなものを見比べていくと、 のあたりで、インストール対象OSについての記述があるように見受けられ、
ってな感じのものが並んでいる。

x64版には必ず Bits="4"という記述があり、x86版にはそれがない。

ところが VC11(VC++2012)では1行だけ Bits="1"と書かれている。

ひょっとしてこれは「x86版だったら・・・」ってな意味なのかな?と思い、試しに「Bits="1"」を消して、再度ビルド。できあがったインストーラーで 64Bit版 Windows 7 にインストールしてみると、今度は「入ってないから入れますよ」と x86版の VC++2012再配布可能パッケージがインストールされ、問題解決となった。

良かった。
勉強になった。

しかしながら Install Sheild 2011で出した問題と同じような内容の問題を出すとは、これまた、なんとも。。。とりあえず、Install Sheild については、筆者はまだまだ勉強不足なのであった。