Большинство современных Windows-приложений для своей нормальной работы требуют наличие установленной платформы .NET Framework. Мастер установки ролей и компонентов Server Manager в Windows Server 2012 R2 позволяет запустить установку двух разных версий .NET Framework — 3.5 и 4.5. Установка .NET Framework 4.5 обычно вопросов не вызывает – вся процедура крайне проста, чего не скажешь про установку .NET Framework 3.5.
Дело в том, что при попытке установить .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 3.5 не являются частью локального кэша бинарных файлов, которые сохраняются на сервер при установке ОС. Сделано это в рамках концепции Features on Demand в Windows Server 2012 с целью уменьшения размера дискового пространства, занимаемого ОС под свои нужды.
Проверим наличие .NET Framework 3.5 в локальном репозитории, выполнив команду Powershell:
Get-WindowsFeature *Framework*
Как вы видите, искомый компонент находится в удаленном состоянии (Install State: Removed)
По-умолчанию, при установке NET Framework 3.5 через Server Manager, система пытается получить необходимые файлы с сайта Windows Update в Интернете (а не локального сервера WSUS), и если на сервере отсутствует доступ в интернет, установка завершается с ошибкой. Пользователю нужно самому указать путь к дистрибутиву ОС, из которого можно было бы установить недостающий компонент.
Чтобы установить .NET Framework 3.5 вручную достаточно, нажав кнопку Specify an alternative source path, указать альтернативный путь к папке с содержимым установочного диска Windows Server 2012 R2.
В качестве пути можно указать как локальную папку (в нашем примере это D:\source\sxs, где D:\ — буква локального DVD-привода с дистрибутивом Windows Server) или сетевой каталог.
Нажав, ОК система найдет бинарные файлы компонента .NET Framework 3.5.и установит его.
Ту же самую операцию можно выполнить и из командной строки, выполнив с правами администратора команду:
dism /online /enable-feature /featurename:NetFX3 /all /Source:d:\sources\sxs /LimitAccess
/Online
– означает, что нужно обновлять текущую ОС, а не wim образ
/enable-feature /featurename:NetFX3 /all
– необходимо установить платформу .NET Framework 3.5 со всеми функциями
/Source
– путь к каталогу дистрибутива Windows, в котором находятся необходимые компоненты
/LimitAccess
– предотвратить обращение к узлу Windows Update
Аналогичная команда Powershell для установки компонента .Net 3.5 выглядит так:
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 (политика правит этот же параметр в реестре)
Чтобы проверить наличие установленного .NET Framework 3.5, перейдите в каталог C:\Windows\Microsoft.NET\Framework64 и убедитесь, что среди каталогов установленных версий .NET появился v3.5.
В том случае, если указанные выше способы установки .NET Framework 3.5.1 вам не помогли, попробуйте следующие решения.
После установки некоторых обновлений, версия (билд) Windows Server 2012 R2 в системе может перестать соответствовать образу ОС, хранящемуся в имеющемся дистрибутиве. В этом случае установщик при сравнении версии ядра Windows отказывается устанавливать устаревшую версию компонента.
В этом случае как правило, при установке .NET Framework через dism появляется ошибка 0x800f081f. The source files could not be found
Решение: установить .Net через с серверов Microsoft:
- Сохраните в reg файл текущие настройки Windows Update в ветке HKLM\Software\Policies\Microsoft\Windows\CurrentVersion\WindowsUpdate
- Удалите данную ветку и перезапустите службу:
net stop wuauserv & net start wuauserv
- Запустите установку .Net из интернета:
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All
- После окончания установки верните настройки WU, импортировав reg файл и еще раз перезапустите службу WindowsUpdate
dism /online /enable-feature /featurename:NetFX3 /all /Source:C:\tmp\winsxs /LimitAccess
Кроме того, если вы устанавливали на сервер дополнительный языковой пакет (Language Packs), перед установкой .NET Framework 3.5.1 его нужно удалить с помощью команды lpksetup.
Также проверьте в списке установленных обновлений системы наличие установленных патчей для NET 3.5 Framework (теоретически они вообще не должны были установится, если компонент NetFX3 не установлен).
Удалите данные обновления и после перезагрузки попытайтесь установить .NET 3.5.
Спасибо!
Спасибо!
А если нет диска и не откуда взять SxS???? То что делать????
В любом случае понадобится либо диск с дистрибутивом Windows либо сервер с такой-же установленной версией ОС. Не думаю, что найти и скачать дистрибутив сейчас большая проблема…
спасибо очень помогло !
Спасибо!
Спасибо получилось установить .Net 3.5 только по вашей инструкции. Поправьте только путь на D:\sources\sxs
Спасибо!
RepairContentServerSource параметр в реестре в каком формате должен быть? REG_CZ или DWORD??? какой? и что стоит ) или какие еще?
Сделал так! Windows 10 64bit Сборка 1511.63
Центр обновления был закрытый.В службах.Открыл. на ручном. Зашел в программы и компоненты-Включение и отключение компонентов Windows.Выставил чек боксы на всех трех вариантах. Установилось.Принял изменения. Закрыл обновления ( это уже на моё усмотрение) и всё. Всё встало. в реестре раздела не было как указано.параметров какие создать в данном разделе,применять не стал. .Ну как то так
Спасибо! Всё получилось! Недоработка MS — система не просит вставить дистрибутив…
Спасибо, статья очень полезная! все получилось!
Большое спасибо!!!
Обічно ведь такоа проблема возникает если нет инета, или обновления настроены через wsus.
А как добавить эти компоненты на всус чтоб они через него же и ставились?
Немного не понял вас. WSUS не предназначен для установки ролей/компонентов Windows — только обновления, апгрейды, драйвера и патчи.
Если же это реализуемо, поделитесь как, а я постараюсь помочь эту тему раскрыть.
Сейчас на серваке 2012r2 установил эти компоненты. Путь не указывал. Скачались сами из инета. Ничего из инструкции делать не пришлось
Спасибо!
Вариант с Powershell помог решить проблему.
Можно просто скачать нужную версию с сайта MS, положить в корень и указать как альтернативный путь.
Работает,
Спасибо
Большой респект автору. Но хотелось бы уточнить, что WindowsUpdate находится на самом деле тут HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate, а не HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\WindowsUpdate.
Принято :). Поправил путь
Огонь!
СПАСИБО!