.NET Framework 3.5 部署指南(针对应用程序开发人员)

Microsoft .NET Framework 3.5 版提供一个可再发行组件安装程序,此安装程序还包含 .NET Framework 2.0 和 3.0 的 Service Pack 和累积更新。

本主题说明如何与应用程序一起重新发布 .NET Framework。 它包含下列部分:

  • 可用格式

  • 从何处获取 .NET Framework 3.5 可再发行组件包

  • 安装要求

  • 手动安装 .NET Framework

  • 在应用程序的安装程序中链接可再发行组件包

  • 为 Web 应用程序安装 .NET Framework 3.5

  • 检测 .NET Framework 3.5

  • 命令行选项

  • 错误代码

  • 附录:.NET Framework 3.5 组件

  • 附录:安装程序示例

可用格式

.NET Framework 3.5 可再发行组件包以两种格式提供:

  • dotnetfx35.exe  这是一个独立的可执行文件,它包含部署到 32 位和 64 位平台的所有支持的操作系统上所需的全部组件。 此可执行文件不包含语言包;默认情况下,它将下载并安装与用户操作系统语言匹配的语言包。 .NET Framework 3.5 版语言包可作为单独的每种语言独立的可执行文件从 Microsoft 下载中心获得。

  • dotnetfx35setup.exe  这是一个轻量引导程序,它将在安装期间从网站下载所需的组件。 此可执行文件不包含任何 .NET Framework 3.5 版组件;它将从网站上仅检测、下载并安装所需的组件。 此引导程序还下载并安装与用户操作系统语言匹配的语言包。 可以使用独立的语言包来安装其他的语言支持。

可以在 32 位和 64 位平台的所有支持的操作系统上使用两个组件包中的任何一个。

您可以在计算机上手动启动并安装可再发行组件,也可以作为 .NET Framework 3.5 应用程序的安装程序的一部分启动并安装它。

注意注意:

需要具有管理员特权才能安装 .NET Framework 3.5。

从何处获取 .NET Framework 3.5 可再发行组件包

您可以从 Microsoft 下载中心下载 Microsoft .NET Framework 3.5 可再发行组件包。 单击页面顶部的“下载”按钮可安装引导程序 (dotNetFx35setup.exe)。 若要下载完整的安装包,请向下滚动到页面底部的“完整的可再发行组件包”链接。

安装要求

本节概括了安装 .NET Framework 3.5 所需满足的软件和硬件要求。 如果未能满足最低要求,则 .NET Framework 安装过程将停止安装。

有关硬件和软件要求的详细列表,请参见3.5 版的系统要求.

软件要求

.NET Framework 3.5 要求在目标计算机上安装下列操作系统之一:

  • Windows XP Home 或 Windows XP Professional,均要求为 Service Pack 2 或更高版本。

  • Windows Server 2003 系列,要求为 Service Pack 1 或更高版本。

  • Windows Vista。

  • Windows Server 2008。

    注意注意:

    .NET Framework 3.5 只在 Microsoft Windows Server 2008 上支持 IA64。

硬件要求

下表列出了运行 .NET Framework 3.5 所需满足的 CPU 和 RAM 要求。

 

所需的 CPU

所需的 RAM

最低

Pentium 400 MHz

96 MB

推荐

Pentium 1 GHz 或更快

256 MB 或更大

手动安装 .NET Framework

在某些情况下,将您的应用程序与 .NET Framework 3.5 一起自动安装可能不可行。 在这种情况下,您可以让用户从 Microsoft 下载中心自己安装 .NET Framework。 在安装过程中,请为用户提供有关如何查找并安装 .NET Framework 的说明。

注意注意:

请不要将可再发行组件包发布到您自己的网络上。 而应将用户引导到 Microsoft 下载中心

在应用程序的安装程序中链接可再发行组件包

.NET Framework 3.5 提供以下三种方法来将 .NET Framework 安装过程纳入(“链接到”)您的应用程序的安装过程中:

  • 选项 1. 让 .NET Framework 安装过程确定需要哪些组件,然后从网站上仅下载并安装所需的组件。

    若要让 .NET Framework 安装过程仅检测、下载并安装所需的组件,请使用 dotnetfx35setup.exe 程序包。 若要链接 .NET Framework 安装过程,请将以下命令添加到您的应用程序的安装过程中:

    dotnetfx35setup.exe /q /norestart

  • 选项 2. 在您的再发行媒体中包括 .NET Framework 文件的完整集合,以便用户在安装过程中不需要从网站上下载任何其他文件。

    如果要在 .NET Framework 安装过程中包括所有组件,请使用完整的独立可执行文件 (dotnetfx35.exe)。 此组件包包含在 x86、x64 和 IA64 计算机所支持的任何操作系统上安装 .NET Framework 3.5 所必需的组件。 如果对于您的应用程序部署,空间和下载时间不是问题,请使用此组件包。 若要链接 .NET Framework 安装过程,请使用以下命令:

    dotnetfx35.exe /q /norestart

  • 选项 3. 包括用户最常用的必需组件,然后让 .NET Framework 安装过程检测任何缺少的组件并从网站上进行下载。 如果您具有要将应用程序部署到的特定平台、操作系统或用户系统配置,则最适合使用此方案。

    若要执行此安装,您必须首先获取完整的独立可执行文件,然后使用以下命令提取文件:

    dotnetfx35.exe /x extract-location

    提取文件之后,您将看到一个文件和文件夹结构,其中包含 .NET Framework 3.5 中每个组件的文件的列表,如本文档的附录中所示。

    若要部署 .NET Framework 3.5,请包括提取过程中创建的文件夹结构中的适当组件,然后使用以下命令将它们链接到 .NET Framework 安装引导程序中:

    dotnetfx35setup.exe /q /norestart

    在本文档的附录中有两个示例,演示了在您的布局中应包括哪些组件。

无论您选择哪种模式,若要链接 .NET Framework 3.5 安装过程,请从命令行中运行可再发行组件包,并使用 /q/norestart 命令行选项。

注意注意:

若要避免自动下载和安装语言包,请使用命令行选项 /lang:enu

为 Web 应用程序安装 .NET Framework 3.5

依赖于 .NET Framework 3.5 功能的基于 Web 的应用程序可能要求在用户计算机上下载并安装 .NET Framework。 您可以按照下一节的说明,确定用户的计算机上是否安装了 .NET Framework 3.5。 如果未安装正确版本的 .NET Framework,您可以将用户引导到 Microsoft 下载中心以获取 .NET Framework 3.5 组件包。

检测 .NET Framework 3.5

通过读取注册表项或通过查询 Internet Explorer 中的用户代理字符串,可以检测是否安装了 .NET Framework 3.5。

读取注册表项

安装成功完成后,.NET Framework 3.5 安装程序会写入注册表项。 通过检查下表中列出的注册表项,可以检测是否安装了 .NET Framework 3.5。

注册表项名称

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5

名称: Install

类型: REG_DWORD

数据: 1

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Post Platform

名称: .NET CLR 3.5.build-number

类型: REG_SZ

读取浏览器中的用户代理字符串

在计算机上安装了 .NET Framework 3.5 后,.NET Framework 3.5 版本号将显示为浏览器标头中报告的用户代理字符串的一部分。 以下示例演示了一个示例页,该页使用 JavaScript 检测并报告是否安装了 .NET Framework 3.5。

<html>
  <head>
    <title>Test for .NET Framework 3.5</title>
    <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8" />
    <script type="text/JavaScript">
    <!--
    var NETFX3RuntimeVersion = "3.5.21022";
    
    function body_onload()
    {
      var result = document.getElementById("result");
      if (HasRuntimeVersion(NETFX3RuntimeVersion))
      {
          result.innerHTML = "This machine has the correct version of the .NET Framework 3.5 runtime: " 
          + NETFX3RuntimeVersion + "." 
          + "\n\nThis machine's userAgent string is: " 
          + navigator.userAgent + ".";
      } 
      else
      {
        result.innerHTML = "The .NET Framework version 3.5 is not installed on this computer.<br/>"
            + "Click <a href='https://go.microsoft.com/fwlink/?LinkId=96339'"
            + " here</a> to get the .NET Framework 3.5 now.";}
    }
    
    //
    // Retrieve the version from the user agent string and compare with specified version.
    //
    function HasRuntimeVersion(versionToCheck)
    {
      var userAgentString = 
           navigator.userAgent.match(/.NET CLR 3.5.[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 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 onload="body_onload();">
    <div id="result" ></div>
  </body>
</html>

如果搜索字符串“.NET Framework 3.5”版本成功,将显示以下消息:

This machine has the correct version of the .NET Framework 3.5 runtime: 3.5.28015.00.
This machine's userAgent string is: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.5.28015.00).

(根据测试 .NET Framework 时使用的不同浏览器和浏览器版本,用户代理字符串的详细信息会略有不同。)

如果没有安装 .NET Framework 3.5,将显示以下消息:

The .NET Framework version 3.5 is not installed on this computer. Click here to get the .NET Framework 3.5 now.

命令行选项

下表列出了在从命令行运行 .NET Framework 3.5 可再发行组件安装程序时可以指定的选项。

选项

说明

/q

- 或 -

/quiet

设置安静模式(取消显示所有 UI)。 .ini 文件不能与此选项一起指定。

/qb

- 或 -

/passive

显示最小化的用户界面;显示进度栏,但不向用户显示任何提示或错误消息。

/uninstall

- 或 -

/remove

卸载产品。

/f

修复已安装的所有 .NET Framework 组件。

/nopatch

指定不应用修补程序并跳过修补程序检查。

/norollback

指定在某个安装组件失败时并不回滚安装。

/norestart

指定安装完成后安装程序不应重新启动计算机。 如果需要重新启动,可再发行组件安装程序将返回 ERROR_SUCCESS_REBOOT_REQUIRED (3010)。

/lang:TLA

安装由三字母缩写词 (TLA) 指定的语言包;例如,/lang:DEU 代表德语语言包,/lang:JPN 代表日语语言包。 只能指定一种语言。 指定 /lang:ENU 将跳过语言包安装,因为 ENU 是代表英语的 TLA。

/?

显示此选项列表。

错误代码

下表列出了 .NET Framework 3.5 可再发行组件安装程序可能返回的错误代码。 这些错误代码对于安装程序的所有版本均是相同的。

错误代码

说明

ERROR_SUCCESS

0

操作已成功完成。

ERROR_INSTALL_USEREXIT

1602

用户已取消安装。

ERROR_INSTALL_FAILURE

1603

安装期间发生错误。

ERROR_UNKNOWN_PRODUCT

1605

此操作仅对当前安装的产品有效。

ERROR_PATCH_PACKAGE_INVALID

1636

修补程序包无法打开,或修补程序不适用于 .NET Framework。

ERROR_INVALID_COMMAND_LINE

1639

命令行参数无效。

ERROR_SUCCESS_REBOOT_INITIATED

1641

安装程序已开始重新启动计算机。 此消息指示安装成功,安装程序将在系统重新启动后继续执行。 (如果指定了 /norestart 选项,则不执行重新启动。)

ERROR_PATCH_PACKAGE_REJECTED

1643

系统策略不允许安装修补程序包。

ERROR_SUCCESS_REBOOT_REQUIRED

3010

需要重新启动才能完成安装。 此消息指示安装成功。

附录

在本附录提供的表中,操作系统已缩写为如下形式:

  • XP = Windows XP

  • Vista = Windows Vista

  • W2K3 = Windows Server 2003

  • W2K8 = Windows Server 2008

.NET Framework 3.5 组件

下表列出了 .NET Framework 3.5 版的组件。

路径

文件名

平台

操作系统

说明

wcu\dotNetFramework

dotNetFx35setup.exe

全部

全部

.NET Framework 3.5 安装引导程序

wcu\dotNetFramework\dotNetFX20

ASPNET.msp

x86、x64

XP、W2K3

2.0 SP1 组件

 

ASPNET_64.msp

x64

XP、W2K3

2.0 SP1 组件

 

clr.msp

x86、x64

XP、W2K3

2.0 SP1 组件

 

clr_64.msp

x64

XP、W2K3

2.0 SP1 组件

 

crt.msp

x86、x64

XP、W2K3

2.0 SP1 组件

 

crt_64.msp

x64

XP、W2K3

2.0 SP1 组件

 

dw.msp

x86、x64

XP、W2K3

2.0 SP1 组件

 

dw_64.msp

x64

XP、W2K3

2.0 SP1 组件

 

Netfx20a_x64.msi

x64

XP、W2K3

2.0 SP1 组件

 

Netfx20a_x86.msi

x86

XP、W2K3

2.0 SP1 组件

 

NetFX_CA.msp

x86、x64

XP、W2K3

2.0 SP1 组件

 

NetFX_Core.msp

x86、x64

XP、W2K3

2.0 SP1 组件

 

NetFX_Core_64.msp

x64

XP、W2K3

2.0 SP1 组件

 

NetFX_Other.msp

x86、x64

XP、W2K3

2.0 SP1 组件

 

NetFX_Other_64.msp

x64

XP、W2K3

2.0 SP1 组件

 

prexp.msp

x86、x64

XP、W2K3

2.0 SP1 组件

 

winforms.msp

x86、x64

XP、W2K3

2.0 SP1 组件

 

winforms_64.msp

x64

XP、W2K3

2.0 SP1 组件

wcu\dotNetFramework\dotNetFX30

Netfx30a_x64.msi

x64

XP、W2K3

3.0 SP1 组件

 

Netfx30a_x86.msi

x86

XP、W2K3

3.0 SP1 组件

 

RGB9RAST_x64.msi

x64

XP、W2K3

3.0 SP1 系统必备组件

 

RGB9RAST_x86.msi

x86

XP、W2K3

3.0 SP1 系统必备组件

 

WCF.msp

x86、x64

XP、W2K3

3.0 SP1 组件

 

WCF_64.msp

x64

XP、W2K3

3.0 SP1 组件

 

WCS.msp

x86、x64

XP、W2K3

3.0 SP1 组件

 

WCS_64.msp

x64

XP、W2K3

3.0 SP1 组件

 

WF.msp

x86、x64

XP、W2K3

3.0 SP1 组件

 

WF_32.msp

x86

XP、W2K3

3.0 SP1 组件

 

WF_64.msp

x64

XP、W2K3

3.0 SP1 组件

 

WIC_x64_enu.exe

x64

XP、W2K3

3.0 SP1 系统必备组件

 

WIC_x86_enu.exe

x86

XP、W2K3

3.0 SP1 系统必备组件

 

WPF1.msp

x86、x64

XP、W2K3

3.0 SP1 组件

 

WPF1_64.msp

x64

XP、W2K3

3.0 SP1 组件

 

WPF2.msp

x86、x64

XP、W2K3

3.0 SP1 组件

 

WPF2_32.msp

x86

XP、W2K3

3.0 SP1 组件

 

WPF2_64.msp

x64

XP、W2K3

3.0 SP1 组件

 

WPF_Other.msp

x86、x64

XP、W2K3

3.0 SP1 组件

 

WPF_Other_32.msp

x86

XP、W2K3

3.0 SP1 组件

 

WPF_Other_64.msp

x64

XP、W2K3

3.0 SP1 组件

 

XPS.msp

x86、x64

XP、W2K3

3.0 SP1 组件

 

XPSEPSC-amd64-en-US.exe

x64

XP、W2K3

3.0 SP1 系统必备组件

 

XPSEPSC-x86-en-US.exe

x86

XP、W2K3

3.0 SP1 系统必备组件

wcu\dotNetFramework\dotNetFX30\x64

msxml6.msi

x64

XP、W2K3

3.0 SP1 系统必备组件

wcu\dotNetFramework\dotNetFX30\x86

msxml6.msi

x86

XP、W2K3

3.0 SP1 系统必备组件

wcu\dotNetFramework\dotNetFX35\ia64

netfx35_ia64.exe

ia64

W2K8

3.5 组件

wcu\dotNetFramework\dotNetFX35\x64

netfx35_x64.exe

x64

XP、W2K3、Vista、W2K8

3.5 组件

wcu\dotNetFramework\dotNetFX35\x86

netfx35_x86.exe

x86

XP、W2K3、Vista、W2K8

3.5 组件

wcu\dotNetFramework\dotNetMSP

NetFx_20_SP1_ENU_License.rtf

-

Vista

2.0 累积更新许可证

 

NetFx_30_SP1_ENU_License.rtf

-

Vista

3.0 累积更新许可证

 

NetFX2.0-KB110806-v6000-x64.msu

x64

Vista

2.0 累积更新

 

NetFX2.0-KB936704-v6000-x64_RTM_en.msu

x64

Vista、W2K8

2.0 英语语言包

 

NetFX3.0-KB929300-v6000-x64.msu

x64

Vista

3.0 累积更新

 

NetFX3.0-KB936705-v6000-x64_RTM_en.msu

x64

Vista、W2K8

2.0 英语语言包

 

NetFX2.0-KB110806-v6000-x86.msu

x86

Vista

2.0 累积更新

 

NetFX2.0-KB936704-v6000-x86_RTM_en.msu

x86

Vista、W2K8

3.0 英语语言包

 

NetFX3.0-KB929300-v6000-x86.msu

x86

Vista

3.0 累积更新

 

NetFX3.0-KB936705-v6000-x86_RTM_en.msu

x86

Vista、W2K8

3.0 英语语言包

安装示例

以下示例列出了在两个不同安装方案中必须在您的安装媒体中包括的文件。

注意注意:

当您包括单个组件时,必须将它们与 .NET Framework 3.5 安装引导程序 (dotNetFx35setup.exe) 放在同一相对路径中。

示例 1

下表列出了在部署到 Windows XP 或 Windows Vista 时必须在您的安装媒体布局中包括的文件。 此文件列表假定用户仅在安装 x86 版本,并且用户已安装 .NET Framework 2.0 SP1 和 3.0 SP1(在 Windows XP 和 Windows Server 2003 上)或累积更新(在 Windows Vista 上)。

路径

文件名

平台

操作系统

说明

 

dotNetFx35setup.exe

全部

全部

.NET Framework 3.5 安装引导程序

dotNetFX35\x86

netfx35_x86.exe

x86

XP、W2K3、Vista、W2K8

3.5 组件

示例 2

下表列出了在部署到 x86 和 x64 计算机上的 Windows XP SP2 或 Windows Server 2003 SP1 时必须在您的媒体布局中包括的文件。 此文件列表假定用户已安装 .NET Framework 2.0 SP1 版。

注意注意:

在本示例中,如果用户不具备 .NET Framework 2.0 SP1,则安装程序将在用户连接到 Internet 时自动下载它。

路径

文件名

平台

操作系统

说明

(根目录)

dotNetFx35setup.exe

全部

全部

.NET Framework 3.5 安装引导程序

dotNetFX30

Netfx30a_x64.msi

x64

XP、W2K3

3.0 SP1 组件

 

Netfx30a_x86.msi

x86

XP、W2K3

3.0 SP1 组件

 

RGB9RAST_x64.msi

x64

XP、W2K3

3.0 SP1 系统必备组件

 

RGB9RAST_x86.msi

x86

XP、W2K3

3.0 SP1 系统必备组件

 

WCF.msp

x86、x64

XP、W2K3

3.0 SP1 组件

 

WCF_64.msp

x64

XP、W2K3

3.0 SP1 组件

 

WCS.msp

x86、x64

XP、W2K3

3.0 SP1 组件

 

WCS_64.msp

x64

XP、W2K3

3.0 SP1 组件

 

WF.msp

x86、x64

XP、W2K3

3.0 SP1 组件

 

WF_32.msp

x86

XP、W2K3

3.0 SP1 组件

 

WF_64.msp

x64

XP、W2K3

3.0 SP1 组件

 

WIC_x64_enu.exe

x64

XP、W2K3

3.0 SP1 系统必备组件

 

WIC_x86_enu.exe

x86

XP、W2K3

3.0 SP1 系统必备组件

 

WPF1.msp

x86、x64

XP、W2K3

3.0 SP1 组件

 

WPF1_64.msp

x64

XP、W2K3

3.0 SP1 组件

 

WPF2.msp

x86、x64

XP、W2K3

3.0 SP1 组件

 

WPF2_32.msp

x86

XP、W2K3

3.0 SP1 组件

 

WPF2_64.msp

x64

XP、W2K3

3.0 SP1 组件

 

WPF_Other.msp

x86、x64

XP、W2K3

3.0 SP1 组件

 

WPF_Other_32.msp

x86

XP、W2K3

3.0 SP1 组件

 

WPF_Other_64.msp

x64

XP、W2K3

3.0 SP1 组件

 

XPS.msp

x86、x64

XP、W2K3

3.0 SP1 组件

 

XPSEPSC-amd64-en-US.exe

x64

XP、W2K3

3.0 SP1 系统必备组件

 

XPSEPSC-x86-en-US.exe

x86

XP、W2K3

3.0 SP1 系统必备组件

dotNetFX30\x64

msxml6.msi

x64

XP、W2K3

3.0 SP1 系统必备组件

dotNetFX30\x86

msxml6.msi

x86

XP、W2K3

3.0 SP1 系统必备组件

dotNetFX35\x64

netfx35_x64.exe

x64

XP、W2K3、Vista、W2K8

3.5 组件

dotNetFX35\x86

netfx35_x86.exe

x86

XP、W2K3、Vista、W2K8

3.5 组件

请参见

概念

.NET Framework 3.5 部署指南(针对管理员)