次の方法で共有


方法: .NET Framework 3.5 がインストールされているかどうかを検出する

管理者は、.NET Framework 3.5 を対象とするシステムに Windows Presentation Foundation (WPF) アプリケーションを展開する前に、まず .NET Framework 3.5 ランタイムが存在することを確認する必要があります。 このトピックでは、管理者が .NET Framework 3.5 がシステム上に存在するかどうかを判断するために使用できる HTML/JavaScript で記述されたスクリプトを提供します。

.NET Framework のインストール、展開、検出の詳細については、「 開発者向けの .NET Framework のインストール」を参照してください。

.NET Framework 3.5 がインストールされると、MSI によって ".NET CLR" とバージョン番号が UserAgent 文字列に追加されます。 次の例は、単純な HTML ページに埋め込まれたスクリプトを示しています。 このスクリプトでは、UserAgent 文字列を検索して .NET Framework 3.5 がインストールされているかどうかを判断し、検索結果にステータス メッセージを表示します。

このスクリプトは Internet Explorer 用に設計されています。 他のブラウザーでは、UserAgent 文字列に .NET CLR 情報が含まれていない場合があります。

<HTML>
  <HEAD>
    <TITLE>Test for the .NET Framework 3.5</TITLE>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8" />
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    var dotNETRuntimeVersion = "3.5.0.0";

    function window::onload()
    {
      if (HasRuntimeVersion(dotNETRuntimeVersion))
      {
        result.innerText =
          "This machine has the correct version of the .NET Framework 3.5."
      }
      else
      {
        result.innerText =
          "This machine does not have the correct version of the .NET Framework 3.5." +
          " The required version is v" + dotNETRuntimeVersion + ".";
      }
      result.innerText += "\n\nThis machine's userAgent string is: " +
        navigator.userAgent + ".";
    }

    //
    // Retrieve the version from the user agent string and
    // compare with the specified version.
    //
    function HasRuntimeVersion(versionToCheck)
    {
      var userAgentString =
        navigator.userAgent.match(/.NET CLR [0-9.]+/g);

      if (userAgentString != null)
      {
        var i;

        for (i = 0; i < userAgentString.length; ++i)
        {
          if (CompareVersions(GetVersion(versionToCheck),
            GetVersion(userAgentString[i])) <= 0)
            return true;
        }
      }

      return false;
    }

    //
    // Extract the numeric part of the version string.
    //
    function GetVersion(versionString)
    {
      var numericString =
        versionString.match(/([0-9]+)\.([0-9]+)\.([0-9]+)/i);
      return numericString.slice(1);
    }

    //
    // Compare the 2 version strings by converting them to numeric format.
    //
    function CompareVersions(version1, version2)
    {
      for (i = 0; i < version1.length; ++i)
      {
        var number1 = new Number(version1[i]);
        var number2 = new Number(version2[i]);

        if (number1 < number2)
          return -1;

        if (number1 > number2)
          return 1;
      }

      return 0;
    }

    -->
    </SCRIPT>
  </HEAD>

  <BODY>
    <div id="result" />
  </BODY>
</HTML>

".NET CLR" バージョンの検索に成功すると、次の種類のステータス メッセージが表示されます。

This machine has the correct version of the .NET Framework 3.5.

This machine's userAgent string is: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.0.590; .NET CLR 3.5.20726; MS-RTC LM 8).

それ以外の場合は、次の種類のステータス メッセージが表示されます。

This machine does not have the correct version of the .NET Framework 3.5. The required version is v3.5.0.0.

This machine's userAgent string is: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.0.590; MS-RTC LM 8).

こちらも参照ください