При попытке установить .NET Framework 3.5 в Windows Server 2012 R2 со стандартными настройками появляется ошибка «Installation of one of more roles, role services or features failed. The source files could not be found…».

Причина такого поведения мастера установки заключается в том, что бинарные файлы .NET Framework
Программная платформа, выпущенная компанией Microsoft в 2002 году. Основой платформы является общеязыковая среда исполнения Common Language Runtime (CLR), которая подходит для разных языков программирования. Функциональные возможности CLR доступны в любых языках программирования, использующих эту среду.
3.5 не являются частью локального кэша бинарных файлов, которые сохраняются на сервер при установке ОС. Сделано это в рамках концепции Features on Demand в Windows Server 2012 с целью уменьшения размера дискового пространства, занимаемого ОС под свои нужды.

Проверим наличие .NET Framework 3.5 в локальном депозитарии, выполнив команду Powershell:

Get-WindowsFeature *Framework*
PS C:\scripts> Get-WindowsFeature *Framework*

Display Name                                            Name                       Install State
------------                                            ----                       -------------
    [ ] .NET Framework 4.5                              AS-NET-Framework               Available
[ ] Биометрическая платформа Windows                    Biometric-Framework            Available
[ ] Функции .NET Framework 3.5                          NET-Framework-Features         Removed
    [ ] .NET Framework 3.5 (включает .NET 2.0 и 3.0)    NET-Framework-Core             Removed
[X] Функции .NET Framework 4.5                          NET-Framework-45-Fea...        Installed
    [X] .NET Framework 4.5                              NET-Framework-45-Core          Installed
    [X] ASP.NET 4.5                                     NET-Framework-45-ASPNET        Installed

Как вы видите, искомый компонент находится в удаленном состоянии (Install State: Removed)

Система по-умолчанию пытается скачать необходимые файлы с сайта Windows Update (локальный сервер WSUS для этих целей не подойдет), и если это невозможно пользователю предлагается самому указать путь к дистрибутиву ОС, из которого можно было бы установить недостающий компонент.

Чтобы установить .NET Framework 3.5 вручную достаточно, нажав кнопку Specify an alternative source path (Уаказать альтернативный исходный путь), указать альтернативный путь к папке с содержимым установочного диска Windows Server 2012 R2.

В качестве пути можно указать как локальную папку (в нашем примере это D:\source\sxs, где D:\ — буква локального DVD-привода с дистрибутивом Windows Server) или сетевой каталог.

Ту же самую операцию можно выполнить и из командной строки, выполнив с правами администратора команду:

dism /online /enable-feature /featurename:NetFX3 /all /Source:d:\sources\sxs /LimitAccess

/Online – означает, что нужно обновлять текущую ОС, а не образ

/enable-feature /featurename:NetFX3 /all – необходимо установить платформу .NET Framework 3.5 со всеми функциями

/Source – путь к каталогу дистрибутива Windows, в котором находятся необходимые компоненты

/LimitAccess – предотвратить обращение к узлу Windows Update

Эта же операция на Powershell выглядит так:

Add-WindowsFeature NET-Framework-Core -Source d:\sources\sxs

Путь к «оригинальному» дистрибутиву Windows можно зафиксировать в системе на постоянной основе с помощью:

  • Параметра реестра RepairContentServerSource, который находится в ветке HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Servicing
  • Или групповой политики Specify settings for optional component installation and component repair (политика правит этот же параметр в реестре)