Установка .NET Framework 3.5 в Windows Server 2012 R2

Більшість сучасних 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 (Політика править цей же параметр в реєстрі)

Примітка. групова політика Specify settings for optional component installation and component repair знаходиться в розділі GPO Computer Configuration -> Administrative Templates -> System. Політику потрібно включити (Enabled), вказати шлях до каталогу з дистрибутивом ОС (Alternative source file path). Щоб сервер не намагався оновлюватися з Інтернету, поставте прапорець Never attempt to download payload from Windows Update.

Щоб перевірити наявність встановленого .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
Порада. Надалі можна використовувати тата C: \ Windows \ winsxs з даного сервера для установки .Net FrameWork 3.5 на інших серверах стій же версією ОС. Скопіюйте папку C: \ Windows \ winsxs на потрібний сервер в каталог C: \ tmp \ winsxs і встановіть компонент командою:

dism / online / enable-feature / featurename: NetFX3 / all / Source: C: \ tmp \ winsxs / LimitAccess

Крім того, якщо ви встановлювали на сервер додатковий мовний пакет (Language Packs), перед установкою .NET Framework 3.5.1 його потрібно видалити за допомогою команди lpksetup.

Див статтю помилка 0x800F081F установки .NET 3.5

Також перевірте в списку встановлених оновлень системи наявність встановлених патчів для NET 3.5 Framework (теоретично вони взагалі не повинні були встановиться, якщо компонент NetFX3 не встановлено).

Видаліть дані поновлення і після перезавантаження спробуйте встановити .NET 3.5.