在Windows 2012 R2上安装.Net 3.5


13

所以我想在Windows 2012 R2服务器上安装.net 3.5。我已经尝试通过添加功能和通过DISM都失败了。

通过添加功能GUI尝试时,我使用的是“指定备用路径”,但失败,并显示错误“安装多个角色,角色服务或功能之一失败”

当尝试通过高架PowerShell使用DISM时,我正在使用以下命令。

dism.exe /online /enable-feature /featurename:NetFX3 /Source:d:\sources\sxs 

这失败了

错误:0x800f0906无法下载源文件。使用“源”选项来指定还原功能所需的文件的位置。有关指定源位置的详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=243077

可以在C:\ Windows \ Logs \ DISM \ dism.log中找到DISM日志文件。

我已按照上面列出的知识库文章(243077)设置SXS文件夹的组策略位置。重新启动,仍然是相同的错误。DSIM日志显示以下内容

处理命令启用功能时失败。-CPackageManagerCLIHandler :: ExecuteCmdLine(hr:0x800f0906)

一个快速的谷歌显示,很多人对此有疑问,您应该卸载 没有安装该服务器的KB2966826和KB2966828

我还尝试了脱机.Net安装程序,它说我必须通过Windows功能添加它。所有命令均已以管理员身份并通过提升权限的提示符运行。

在撰写本文时,我搜索到了“相似的问题”,并查看了此无法在Windows Server 2012上安装.net 3.5的情况。

跑步

dism.exe /online /enable-feature /featurename:NetFX3 /all

产生与上述相同的错误。


如果有人已经在管理该服务器,那么他们很可能会通过从操作系统中删除二进制文件来删除该功能。现在,2012年允许您删除不打算安装的角色的不需要的文件。这就是为什么它提示您输入安装文件的备用路径的原因。对命令进行Powershell查找,它将告诉您如何指定该备用路径。
2015年

如果安装了KB2919355(更新1),则应使用集成了KB2919355的源文件。那是它对我有用的唯一方法。
彼得·汉道夫

您是否安装了其他MUI软件包?
magicandre1981

@ magicandre1981没有MUI,这是Windows的全新安装。我们为每台服务器(虚拟)使用1个应用。我会尝试您的建议。
Zapto

您在使用WSUS吗?您可以设置组策略中的一项设置,该设置告诉Windows不要在WSUS中查找这些文件,因为它不能为此安装。
briantist

Answers:


13

我用于在Windows 8.1和Server 2012 R2上安装.NET Framework 3.5的命令是:

DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:D:\sources\sxs

其中D:\是已安装的ISO或DVD驱动器。与/ LimitAccess的唯一区别是/ LimitAccess,但我相信这是重要的部分,因为它阻止了它尝试与Windows Update或WSUS联系。无论出于何种原因,Windows 8 / 8.1和Server 2012 / 2012R2上的.NET Framework 3.5的此方面(与Windows Update联系)都已完全中断,并将始终导致其失败。

另请参阅:http : //blogs.technet.com/b/askcore/archive/2012/05/14/windows-8-and-net-framework-3-5.aspx



对于任何在sxs文件夹中查找cab文件的人,都可以从androidfilehost.com/?fid=745425885120760819下载。答案中的信息链接现在也已存档,可以在下面的链接docs.microsoft.com/en-us/archive/blogs/askcore/…中找到。
山姆

6

挂载Windows安装磁盘或使用物理DVD时,我遇到了相同的问题,这是如何解决的:

  1. 在根目录下创建一个文件夹(例如C:\ NetFx3)
  2. 将Windows安装盘。\ sources \ sxs中的microsoft-windows-netfx3-ondemand-package.cab复制到C:\ NetFx3文件夹
  3. 以管理员身份执行命令提示符
  4. DISM.exe /online /enable-feature /featurename:NetFX3 /All /Source:C:\NetFX3 /LimitAccess
  5. 完成后,文本进度条将达到100%,并显示一条消息:“操作成功完成”。

出于某种原因,我的光盘驱动器会显示磁盘上的文件,但DISM不喜欢它,但是将文件复制到C:似乎可行。


2

对我来说,解决方案是这些答案的结合。我在一台装有Windows Server 2012 R2的计算机上。

我尝试解决以下问题:我手头没有操作系统的ISO。但是无法使其正常工作。因此,我不得不为Windows Server 2012 R2找到一个ISO。

1.)启动本地组策略编辑器或组策略管理控制台(WIN + R,然后键入gpedit.msc)。

2.)展开计算机配置,展开管理模板,然后选择系统。

3.)打开“为可选组件安装和组件修复组策略指定设置”设置,然后选择“启用”。

4.)选中“直接与Windows Update联系以下载修复内容,而不是Windows Server Update Services(WSUS)”复选框。单击应用,单击确定。

设定

5.)下载操作系统的ISO并挂载映像。我在这里下载了一个:https : //www.technig.com/download-windows-server-2012-r2-essentials-iso-file/

*注意:这是一个3Gb文件。

6.)打开高架Powershell并运行:

DISM /在线/启用功能/功能名称:NetFx3 /所有/ LimitAccess /源:E:\ sources \ sxs

*注意:在这种情况下,ISO已安装到“ E:\驱动器”上。

使用Powershell安装Net 3.5

*该线程是救生员。感谢所有贡献者,特别是@Joshua McKinnon!


这似乎也是我在方案中遇到的问题。组策略的更改很有效!我不知道它是否值得,但是我将组策略设置为安装完成后的状态。
穆斯先生

1

以上方法都不适合我。原来,我已经配置了WSUS服务器。我可以安装的唯一方法是

1)注册表编辑器

2)转到计算机-> HKEY_LOCAL_MACHINE->软件->策略->微软-> Windows-> WindowsUpdate

3)记下两个键的值:WUServer和WUStatusServer

4)删除/重命名这些键

5)停止并启动WindowsUpdate

6)添加了.Net3.5功能

7)放回密钥,然后重新启动WindowsUpdate。

希望对您有所帮助


1
请注意,您可以重命名注册表项,而不是删除它们。
马修·韦特莫尔

好点子!我尝试清除它们,但这没有用。在您的建议中添加了
formica

0

当DISM命令跳过/ Source开关指定的媒体并在线查找文件时,这意味着指定媒体中的源文件已损坏或不适用于您的服务器(版本不匹配)。

错误代码0x800f0906进一步证明了Microsoft记录的这种行为:https : //technet.microsoft.com/zh-cn/library/dn482067.aspx

您最好的选择是帮助解决此问题:

  1. 更改您使用的媒体,如果可能,请重新下载。
  2. 用不同的方法展示媒体。如果是VM,请挂载ISO。如果是物理磁盘,则刻录到DVD。如果两个文件都复制到本地磁盘。如果失败,请尝试共享文件夹。
  3. 如果以上所有方法均失败,则表明您正在使用WSUS,请尝试使用“更新源”位置配置WSUS,将sxs文件夹复制到共享文件夹,网络中的服务器将使用该文件夹作为源用于安装Windows组件:https ://technet.microsoft.com/zh-cn/library/dn482065.aspx
  4. 如果由于某种原因不能使用WSUS,请从服务器上删除GPO并通过运行“ gpupdate / sync / force ”来确保不缓存其设置,完成后,尝试使用命令“从Internet在线进行安装” DISM /在线/启用功能/功能名称:NetFx3 /全部

如果上述所有方法均失败,则我强烈建议您提供DISM服务日志以进行任何进一步的故障排除,但是在此阶段,我将更愿意进行完整的服务器重建。


几乎是正确的,有点。通过在步骤4中简单地删除GPO设置(即将其设置为“未配置”),将使您返回到步骤2的位置。通过将策略设置为启用并选中“直接与Windows Update联系以下载修复程序”框内容而不是Windows Server Update Services(WSUS)”将允许DISM命令确实从Internet提取。/ Online开关并不表示“从Internet上获取”,而是表示“为正在运行的[或在线]计算机提供服务”。#documentation
奥斯丁2015年

是的,我是最后一个使用互联网进行更新的方法,我想确保他可以使用LAN中的任何本地资源来快速进行安装,而无需从互联网上下载。我也知道DISM的摆动,/ Online的意思是“指定将在当前运行的操作系统上执行该操作” technet.microsoft.com/zh-cn/library/hh825079.aspx
Noor Khaldi

好的,但是如果Windows Update有定义的Intranet位置(例如WSUS服务器),该命令将不会检查Internet。除非您在步骤3中启用了GPO,并且设置为直接联系Windows Update以下载修复内容而不启用Windows Server Update Services(WSUS),否则它将在此处进行检查。
奥斯丁2015年

0

您的DISM命令找不到所需的资源,因为它正在检查源“在线”。如果为Windows Update Service指定了更新源,则Windows 6.2+将(默认)仅与更新源服务器一起检查组件的安装/修复。

如果您不想将更新源(通常为WSUS)服务器设置为修复/安装组件的源,则可以启用以下组策略:

计算机配置\管理模板\系统

指定可选组件安装和组件修复的设置

确保选中此选项:

直接联系Windows Update以下载修复内容,而不是Windows Server Update Services(WSUS)


0

确保您的Sources媒体与您的Windows版本完全匹配。

我花了半天的时间尝试使用Server 2012 ISO在Server 2012 R2上安装.NET35。一旦源是正确的,DISM命令(根据此答案)就可以正常工作。


0

我有完全相同的问题。我的解决方法是从Active Directory中删除服务器,安装.Net 3.5,然后再添加回AD。我确定它在某种程度上与WSUS有关,但这为我们解决了这一问题。我们只需确保在添加到域之前在所有服务器上安装3.5。



0

互联网上有很多东西,其中大部分都总结在这里的答案中。我们尝试了所有方法,但都无济于事。即使指向sxs文件夹的各种副本,它仍然会得到“找不到源文件”错误的变体。

我最终将它指向另一台具有.net 3.5(c:\ windows \ winsxs)且经过完全修补的服务器上的winsxs文件夹,并且可以正常工作:

DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:\\otherserver\winsxs

我的理论是,安装过程正在寻找与服务器上当前KB匹配的源文件。我知道还有其他文章指出要删除两个特定的KB,但是这些未出现在我们已安装的修补程序列表中。

另请注意,添加/删除功能不适用于此共享。我不得不使用DISM。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.