SATOXのシテオク日記

~ふもっふ、ふもふも~

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となります。
 
びしっ。