Visual StudioのWebセットアッププロジェクトで作ったインストーラーをWindows 10やWindows Server 2016で起動しようとするとこんなダイアログが出てインストールができない。

このセットアップはInternet Information Server 5.1かそれ以上を必要とし、加えてWindows XP 以降のバージョンを必要とします。このセットアップはWindows2000にインストールすることはできません。Internet Information Serverまたはより新しいバージョンのオペレーティングシステムをインストールして、このセットアップをやり直してください。

Windows2000とか関係ないじゃん!Windows 10だよ!

※最新版のセットアッププロジェクトでは既にこの現象は直っているようで、最新のセットアッププロジェクトをダウンロード、インストールし、
新しいセットアッププロジェクトを作れば発生しないみたい(試したけど問題なくインストールできるようになってた)。

古いプロジェクトではそうはいかない。

ただ、今作っている、これから作るソフトならいいんですが、古いソフトで既にセットアッププロジェクトが作られているものだとそういうわけにもいかない。
古いVisualStudioで作った古いSetupProjectだと新しいVisual Studioで開いてもダメなのです。
既存のセットアッププロジェクトを消して新しいプロジェクトをつくって、全部入れなおす。
とかやるのは何か追加漏れがあったり、参照ミスが起こったりしてしまいそうでやりたくない。
今までやってたんだけど今後も古いソフトいじったときにやるのはめんどくさい。
ということで調べてみることにした。

【スポンサーリンク】



IISの起動条件をいじる

調べてたらIISの起動条件([SetupProject右クリック]-[View]-[起動条件])のIISCondition(IIS条件)のプロパティのConditionの項目に下記を入れればいいというのが見つかった。

((IISMAJORVERSION >= “#5” AND IISMINORVERSION >= “#1”) OR IISMAJORVERSION >= “#6”) OR IISMAJORVERSION = “#10”

実際、少し古いくらいのものはこれだけで直ったんですが、かなり古いソフトになるとこれだけでダメみたい。
やっと解決策を見つけたと思ったのに、、、、

最新のSetup Projectで作成したプロジェクトを覗いてみる

最新のSetup Projectで作ったWebセットアッププロジェクトと比較してみよう!と思って適当に作ってみた。

先ほどのIIS起動条件の部分が多少変わっていて、最新のIISCondition(IIS条件)のプロパティのConditionは下記のようになっていました。

(IISMAJORVERSION >= “#5” AND IISMINORVERSION >= “#1”) OR IISMAJORVERSION >= “#6” OR (IISMAJORVERSION > “#1” AND IISMAJORVERSION < "#2")

だいぶ変わっているじゃないか!!
これで解決、、、にはならず、、、
なかなかしぶとい。

検索条件が足りていなかった!

さらに深堀りしていたら、ついに見つけました!
上が古いほうのIIS起動条件、下が新しいIIS起動条件。



Search Target Machineのところ!新しいほうは2つあるじゃん!!!

それぞれのプロパティをみてみると、、、

こっちが古いほう

こっちが新しいほう


MajorVersionとMinorVersionに分かれているじゃないか!!

起動条件のところに書いてあった「IISMAJORVERSION」と「IISMINORVERSION」はこいつらのPropertyだったのか!!
IISMINORVERSIONがなかったからずっとダメだったのね!
ということでSearch Target Machineを右クリックで「レジストリ検索の追加」でIISMINORVERSION用のものを追加。

Search for IIS Major Version

Search for IIS Major Versionの定義はこちら

Property IISMAJORVERSION
RegKey SYSTEM\CurrentControlSet\Services\W3SVC\Parameters
Root vsdrrHKLM
Value MajorVersion

Search for IIS Minor Version

Search for IIS Minor Versionはこちら

Property IISMINORVERSION
RegKey SYSTEM\CurrentControlSet\Services\W3SVC\Parameters
Root vsdrrHKLM
Value MinorVersion

というように修正!!

そしてついに、、、、

できたーーーーーー!
もっと早くから新しいプロジェクトと比較しておけばよかったな、、、

インストーラーが変更できないとき

ソースコードが手に入らず、 セットアッププロジェクトがいじれないよ!
ってときはレジストリの一部を変更することでできるみたい。

場所は

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters

2つの項目は下記に変更
MajorVersion:7
MinorVersion:5

こうすることで、IIS7.5(Windows 7やWindows Server 2008 R2)扱いになるようです。

インストールできたらレジストリの値は元に戻しておきましょう。

【スポンサーリンク】



まとめ

今回対応したものは以下の2つ。

〇IIS Conditionnonの「Condition」の項目を修正
(IISMAJORVERSION >= “#5” AND IISMINORVERSION >= “#1”) OR IISMAJORVERSION >= “#6” OR (IISMAJORVERSION > “#1” AND IISMAJORVERSION < "#2")

〇Search Target MachineでIIS Major Version用しかない場合はIIS Minor Version用の検索条件を追加する。

〇Search for IIS Major Version
Property:IISMAJORVERSION
RegKey:SYSTEM\CurrentControlSet\Services\W3SVC\Parameters
Root:vsdrrHKLM
Value:MajorVersion

〇Search for IIS Minor Version
Property:IISMINORVERSION
RegKey:SYSTEM\CurrentControlSet\Services\W3SVC\Parameters
Root:vsdrrHKLM
Value:MinorVersion

プロジェクトが変更できないときはレジストリを一時的に変更して無理やりインストール!

以上です。

これでやっと新しいプロジェクト作り直したりしないで済みそうです。