「このセットアップはInternet Information Server 5.1かそれ以上を必要とし、...」
Visual Studio (2017)でWebアプリケーションのインストーラーを作り終わり、いざインストールをすると...
以下のメッセージが表示され、インストールできないことありませんでしたか?
メッセージには何を言っているのかよくわからなかったですが、
「あんたのOS古すぎや!Windows XP以降のOS用意したれ!」
と言ってるっぽい。
いや、アプリをインストールしようとしているOSはWindows 10なんですが…
そんなメッセージとは関係なく? 実はVisual StudioのSetup Projectに原因がありました。では一つ一つみていこう。
Webアプリケーション用のSetup Project
まず、そもそもだがWebアプリケーション用のSetup Projectは専用のプロジェクトがVisual Studioで用意されている。
原因はWindows 10にあった!?
先程のエラーメッセージ「このセットアップはInternet Information Server 5.1かそれ以上を必要とし、...」の原因はWindows 10にありました。
その原因となる設定は以下の通りです。
まずはWebSetupプロジェクトを右クリックして View > 起動条件 と選択していきます。
次にLaunch Condition画面でIIS Conditionのプロパティを確認します。
注目するべきプロパティはCondtionです。
内容は下記にあるとおり
(IISMAJORVERSION >= "#5" AND IISMINORVERSION >= "#1") OR IISMAJORVERSION >= "#6"
意味としては「IISのMajor Versionが5以上かつ、Minor Versionが1以上、もしくはMajor Versionが6以上」です。(まぁそのままだけど)
IISは各OSに対して次のバージョンで構成されているそうです。
- Windows 2000 ... IIS 5.0
- Windwos XP... IIS 5.1
- Windows Server 2003 ... IIS 6.0
- Windows Vista, Server 2008 ... IIS 7.0
- Windows 7, Server 2008 R2 ... IIS 7.5
- Windows 8, Server 2012 ... IIS 8.0
- Windows 8.1, Server 2012 R2 ... IIS 8.5
- Windows 10, Server 2016 IIS 10.0
この表を見ると一見、Windows 10も問題なさそうに思えます。
しかし、Windowsでは自身のIISのバージョン情報をレジストリでもっているのですが、Windows10ではこのように表示されています。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters
なんとバージョンはaです笑。
値はHEXでもっているため、10の表記はaであり、aはIIS Conditionに記載があった5.1以上が判断つきません。
よって、エラーなるんだそうです。
じゃどうする?
回避策1 レジストリを変える。
上記のレジストリを次のように変えましょう。(非推奨)
MajorVersion 7
MinorVersion 5
要は、IISのバージョンの偽造をすることでIIS5.1より新しいよと認識させるのです。 んー。これは微妙かな。
どうしてもという時の応急処置としては使えるかも。
回避策2 IIS Conditionを変える。
Setup ProjectのIIS Conditionを以下の値に変える。
上記で説明していたIIS Conditionの値を以下のようにします。
((IISMAJORVERSION >= "#5" AND IISMINORVERSION >= "#1") OR IISMAJORVERSION >= "#6") OR IISMAJORVERSION = "#10"
#10が0x0000000aを認識してくれるみたいです。
結果
さて、早速インストールをしてみます。
Setup Projectをリビルドして、インストールしてましょう(要管理者権限)
インストールが進む! 解決!
Visual StudioでWebアプリケーションを開発する人ならだれでも、一度はこの問題にぶち当たるのではないでしょうか。
Microsoftさん! 惜しい!