Windows8のバージョン判定方法

印刷

Windows 8のバージョン判定方法 Windows8のDeveloper Preview版が発表されており、既に触っている人も多いと思います。 そこで、InstallShieldでWindows8に対応するTipsを書くことにします。

 

インストーラから見ると、Windows8はWindows7と比べて大きな変化は無いようです。 Vistaのときはmanifest、UAC、32/64bit振り分け対応など細かい対応が必要でしたが、Windows7以降は、そのような変化は出てきていません。 そこでOSバージョン判定について書きます。

●InstallScript

InstallScriptでWindows 8かどうかの判定を行う方法を解説します。 InstallScriptでは、以下の変数にバージョン番号が入っています。

SYSINFO.nWinMajor: メジャーバージョン番号
SYSINFO.nWinMinor: マイナーバージョン番号

また、Windows 8のバージョン番号は6.2になります。

以下の関数IsWindows8はWindows 8であればTRUE、それ以外であればFALSEを返します。

function BOOL IsWindows8() 
begin
     if (SYSINFO.nWinMajor == 6 && SYSINFO.nWinMinor == 2) then
         return TRUE;
     endif;

      return FALSE; 
end;

こんなコードを加えると判定できます。

●MSI

MSIの場合はInstallScript以外も使えるので、C#で書く場合は単に普通にC#でバージョン判定するコードを書けば良いだけです。 世の中に山ほどサンプルが転がっているので特には書きません。

MSIは他にもCでもC++でもVBScriptでもInstallScriptでも色々使えるので、これまでのインストーラで使っている方法で対応するのが良いです。

また、MSIが持ってるプロパティ値で判定する方法もあります。こちらを参照ください。

Windows Dev Center - Operating System Property Values 

MSIだったら、これが一番使い勝手が良いかもしれません。