< イコール区切りのファイルを読むタイ付きハッシュ | ZIP 作成処理を試作中。 >

August 23, 2010

インストールされている .NET Framework のバージョンをチェックするスクリプト - .NET Framework 4.0 対応版

インストールされている .NET Framework のバージョンをチェックするスクリプト を .NET Framework 4.0 に対応してみました。
4.0 は Full と Client Profile の 2 種類があるんですねー。

<?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?>
<package>
<job id="Registry">
<?job error="True" debug="True" ?>
<script language="JScript">
<![CDATA[
var checker = function ()
    {
        var _reader = function ()
            {
                var _shell = new ActiveXObject ("WScript.Shell");
                return { read: function (name) { try { return _shell.RegRead (name); } catch (e) {}; return null; } };
            } ();

        var _checkKey = function (key)
            {
                var install = _reader.read (key + "\\Install");
                if (install == null || "" + install == "0")
                    return null;
                var servicePack = _reader.read (key + "\\SP");
                if (servicePack == null) servicePack = 0;
                return servicePack;
            };

        var _check10 = function ()
            {
                var install = _reader.read ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\Full\\v1.0.3705\\1041\\Microsoft .NET Framework Full v1.0.3705 (1041)\\Install");
                if (install == null || "" + install == "0")
                    return null;

                var version = _reader.read ("HKLM\\SOFTWARE\\Microsoft\\Active Setup\\Installed Components\\{78705f0d-e8db-4b2d-8193-982bdda15ecd}\\Version");
                if (version == null)
                    version = _reader.read ("HKLM\\SOFTWARE\\Microsoft\\Active Setup\\Installed Components\\{FDC11A6F-17D1-48f9-9EA3-9051954BAA24}\\Version");
                if (version == null)
                    return 0;

                var m = version.match (/^1,0,3705,(\d+)$/);
                var servicePack = 0;
                if (m != null && m.length > 1)
                    servicePack = m [1] - 0;

                return servicePack;
            };

        var _formatResult = function (check, label)
            {
                switch (check)
                {
                case null: return label + ": not installed.\n";
                case 0:    return label + ": installed.\n";
                default:   return label + ": SP" + check + " installed.\n";
                }
            };

        return {
            check10: _check10,
            check11: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v1.1.4322"); },
            check20: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v2.0.50727"); },
            check30: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v3.0"); },
            check35: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v3.5"); },
            check40Client: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Client"); },
            check40Full:   function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full"); },
            check11JP: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v1.1.4322\\1041"); },
            check20JP: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v2.0.50727\\1041"); },
            check30JP: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v3.0\\1041"); },
            check35JP: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v3.5\\1041"); },
            check40ClientJP: function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Client\\1041"); },
            check40FullJP:   function () { return _checkKey ("HKLM\\SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full\\1041"); },
            show: function ()
                {
                    WScript.echo (_formatResult (this.check10 (), ".NET Framework 1.0")
                        + _formatResult (this.check11 (), ".NET Framework 1.1")
                        + _formatResult (this.check11JP (), "    Japanese Langage Pack")
                        + _formatResult (this.check20 (), ".NET Framework 2.0")
                        + _formatResult (this.check20JP (), "    Japanese Langage Pack")
                        + _formatResult (this.check30 (), ".NET Framework 3.0")
                        + _formatResult (this.check30JP (), "    Japanese Langage Pack")
                        + _formatResult (this.check35 (), ".NET Framework 3.5")
                        + _formatResult (this.check35JP (), "    Japanese Langage Pack")
                        + _formatResult (this.check40Client (), ".NET Framework 4.0 Client Profile")
                        + _formatResult (this.check40ClientJP (), "    Japanese Langage Pack")
                        + _formatResult (this.check40Full (), ".NET Framework 4.0 Full")
                        + _formatResult (this.check40FullJP (), "    Japanese Langage Pack")
                        );
                }
        };
    } ();
checker.show ();
]]>
</script>
</job>
</package>

トラックバック

このエントリーにトラックバック:
http://frog.raindrop.jp/cgi-bin/mt/mt-tb.cgi/2539

コメント

コメントする

※ コメントスパム対策のため、コメント本文はおはよう、こんにちわ、こんばんわのいずれかより始めるようにしてください。

name:
email:

※ 必要ですが、表示しません。

url:
情報を保存する ?