Windows Storeアプリがメジャーになってきているこの昨今、レガシーなインストーラーアプリなんてのを頑張るのもしゃくなわけですが、Windows10 64bit以降のみの環境にスンストール可能なインストーラーを作りたい衝動に駆られ、調べてみたというマニアックなネタです。
1. Windows8.1とWindows10の問題
マイクロソフトさん、気が利かない。
GetVersionExやVerifyVersionInfoなんて関数があるわけなのですが、そこで取得されるバージョンは基本的に
Windows8.1もWindows10もなんと同じなのです。以下、取得されるバージョン。(exeなら
マニフェストを変えると10.0と返ったりしますが……)
なもんで、結論、
レジストリを使います。
キー: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となります。
びしっ。