Visual Studio Installerにインストール環境条件をつける
Windows Storeアプリがメジャーになってきているこの昨今、レガシーなインストーラーアプリなんてのを頑張るのもしゃくなわけですが、Windows10 64bit以降のみの環境にスンストール可能なインストーラーを作りたい衝動に駆られ、調べてみたというマニアックなネタです。
1. Windows8.1とWindows10の問題
マイクロソフトさん、気が利かない。GetVersionExやVerifyVersionInfoなんて関数があるわけなのですが、そこで取得されるバージョンは基本的にWindows8.1もWindows10もなんと同じなのです。以下、取得されるバージョン。(exeならマニフェストを変えると10.0と返ったりしますが……)
OS | Major.Minor |
---|---|
Windows 10 | 6.3 (10.0) |
Windows 8.1 | 6.3 |
Windows Server 2012 R2 | 6.3 |
Windows 8 | 6.2 |
Windows Server 2012 | 6.2 |
Windows 7 | 6.1 |
なもんで、結論、レジストリを使います。
キー:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentMajorVersionNumber
ここにWindowsのメジャーバージョンである10と書かれています。
詐称する人のことなんて知りません。
2. インストーラーの起動条件を設定する
今回はVisual Studio 2015のセットアッププロジェクトを使用しています。起動条件の「Search Target Machine」右クリックで「レジストリ検索の追加」を行い、新しくできたオブジェクトのプロパティを編集します。
(Name) | OSCurrentMajorVersionNumber |
---|---|
Property | OSMAJORVERSION |
RegKey | SOFTWARE\Microsoft\Windows NT\CurrentVersion |
Root | vsdrrHKLM |
Value | CurrentMajorVersionNumber |
これで「OSMAJORVERSION」にメジャーバージョンが入力されます。
次に、「Launch Conditions」右クリックで「起動条件の追加」を行い、プロパティを編集します。
(Name) | CheckWin10_64bit |
---|---|
Condition | (VersionNT64>=603) AND (OSMAJORVERSION>="#10") |
InstallUrl | |
Message | このアプリケーションはWindows 10 (64bit) 以降で動作します。 |
Conditionの項目は「Windows8.1以降かWindows10以降の64bit OS」かつ「メジャーバージョンが10以上」をあらわしており、つまり「Windows 10 64bit以上」を示す条件となります。
「InstallUrl」は条件がFalseのときに表示するURLとなります。
びしっ。