1つ前のエントリーでは、あえて、Windows Server 2003 R2 を乗せていません。2008 の 32bit 版は単に欠落してましたが…
それはなぜか?判定できないからです。
2003 は R2 であってもそうではない場合であっても、OS のバージョン的には、5.02 でBuild番号は3790です。
msi 的には、VersionNT=502 And WindowsBuild=3790 となります。MsiNTProductType なども変わりありません。ではどうするか?
じつは、APIでたった一つだけR2かどうかを判定するパラメータがあります。それは、GetSystemMetrics API の SM_SERVERR2 というパラメータ。
- if( GetSystemMetrics( SM_SERVERR2 ) ){
- MessageBox( NULL, _T("このOSは、R2ですね。わかります。") );
- }
if( GetSystemMetrics( SM_SERVERR2 ) ){
MessageBox( NULL, _T("このOSは、R2ですね。わかります。") );
}
という感じで利用します。
では、msi の場合はどうするか?プロパティがないので、カスタムアクションを作ってプロパティに設定するようにしてください。
OSの細かいところを…というのは何気に面倒なんですねー