阿里云 Windows 实例默认采用 WSUS(Windows Server Update Services)获取更新源,导致.NET Framework 和语言包安装文件缺失。所以在 Windows Server 2012 R2/2016 服务器中会出现安装.NET Framework 报错找不到源文件或者无法安装语言包的问题,具体表现如下:
问题1:.NET Framework 报错找不到源文件
在 Windows Server 2012 R2 或 Windows Server2016 系统中安装.NET Framework 3.5.1 时报如下图所示的错误:
问题2:无法安装语言包
在控制面板切换语言或者 Windows Update 中查询语言选项时,无法选择或者安装语言包。如下图所示:
解决方法
本文主要是通过将更新源从 WSUS 切换为 Windows Update 来解决问题。具体做法如下:
1、从开始菜单中找到 PowerShell,右键单击选择以管理员身份运行。
2、运行以下命令修改注册表将更新源设置为 Windows Update:
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU' -Name UseWUServer -Value 0
Restart-Service -Name wuauserv
3、继续在 Server Manager 中安装.NET Framework 或者在控制面板中安装语言包,运行以下命令可以通过 PowerShell 安装.NET Framework:
Install-WindowsFeature Net-Framework-Core
4、(可选)运行以下命令将更新源重新设置为 WSUS。
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU' -Name UseWUServer -Value 1
Restart-Service -Name wuauserv
补充说明
1、Windows Server 2012 与 Windows Server 2016 内存占用较高,安装其他应用程序使内存消耗更高,可能会导致内存不足引起安装.NET Framework 失败,因此建议增加物理内存,如果是 I/O 优化实例,可以酌情开启系统虚拟内存。
2、如果安装.NET Framework 报错 0x800f081f,请检查公网网络是否正常。如果正常,可能是连接 Windows Update 服务器链路不稳定导致更新失败,建议更换时间段重试。
答案来自@阿里云文档