Windows Server 2012 R2에서 .NET Framework 3.5 설치하기
대부분의 최신 Windows 애플리케이션이 정상적으로 작동하려면 .NET Framework가 필요합니다. Windows Server 2012 R2의 서버 관리자(Server Manager) '역할 및 기능 추가' 마법사를 이용하면 .NET Framework 3.5와 4.5 두 가지 버전을 설치할 수 있습니다. .NET Framework 4.5는 설치 과정이 매우 간단하지만, 3.5 버전은 사정이 조금 다릅니다.
설치 시 발생하는 오류 메시지
기본 설정 상태로 Windows Server 2012 R2에 .NET Framework 3.5를 설치하려고 하면 다음과 같은 오류 메시지가 나타납니다.
“하나 이상의 역할, 역할 서비스 또는 기능을 설치하지 못했습니다. 원본 파일을 찾을 수 없습니다(The source files could not be found)…”
오류 발생 원인
이러한 현상의 원인은 .NET Framework 3.5 바이너리 파일이 운영체제 설치 시점에 시스템 디스크에 저장되는 로컬 구성 요소 캐시에 포함되어 있지 않기 때문입니다. 이는 Windows Server 2012의 FOD(Features on Demand) 개념에 따라 운영체제가 자체적으로 사용하는 디스크 공간을 줄이기 위해 도입된 조치입니다.
다음 PowerShell 명령으로 로컬 리포지토리에 .NET Framework 3.5가 있는지 확인할 수 있습니다.
Get-WindowsFeature *Framework*
결과를 보면 해당 구성 요소가 제거된 상태(Install State: Removed)임을 알 수 있습니다.
대체 원본 경로를 지정하여 설치하기
서버 관리자를 통해 .NET Framework 3.5를 설치할 때 기본적으로 시스템은 인터넷상의 Windows Update 웹 사이트(로컬 WSUS 서버가 아님)에서 필요한 파일을 가져오려고 시도합니다. 따라서 서버가 인터넷에 연결되어 있지 않으면 설치에 실패합니다. 이 경우 누락된 구성 요소를 설치할 수 있는 OS 배포 이미지의 경로를 직접 지정해 주어야 합니다.
.NET Framework 3.5를 수동으로 설치하려면 대체 원본 경로 지정(Specify an alternative source path)을 클릭한 뒤, Windows Server 2012 R2 설치 디스크가 들어 있는 폴더의 경로를 입력합니다.
팁: 설치 디스크에는 현재 설치된 것과 동일한 버전의 OS가 담겨 있어야 합니다(에디션, 언어, 업데이트 수준까지 일치해야 합니다). 지정한 폴더에서 필요한 파일을 찾지 못한다면 아래의 해결 방법을 참고하세요.
경로는 로컬 폴더(예: D:\source\sxs, 여기서 D:\는 Windows Server 배포 디스크가 들어 있는 DVD 드라이브 문자) 또는 네트워크 공유 폴더 어느 쪽이든 지정할 수 있습니다.
확인(OK)을 클릭하면 시스템이 .NET Framework 3.5 바이너리 파일을 찾아 구성 요소를 설치합니다.
명령 프롬프트(DISM)로 설치하기
동일한 작업은 명령 프롬프트에서 관리자 권한으로 다음 명령을 실행해서도 수행할 수 있습니다.
dism /online /enable-feature /featurename:NetFX3 /all /Source:d:\sources\sxs /LimitAccess
- /Online: 현재 실행 중인 OS를 대상으로 작업을 수행합니다(wim 이미지가 아님)
- /enable-feature /featurename:NetFX3 /all: .NET Framework 3.5를 모든 하위 기능과 함께 설치합니다
- /Source: 필요한 구성 요소가 포함된 Windows 배포 디렉터리의 경로입니다
- /LimitAccess: Windows Update 접근을 차단합니다
PowerShell로 설치하기
PowerShell에서 .NET Framework 3.5를 설치하는 명령은 다음과 같습니다.
Add-WindowsFeature NET-Framework-Core -Source d:\sources\sxs
원본 경로를 영구적으로 설정하기
Windows 배포 원본 경로는 시스템에 영구적으로 지정해 둘 수도 있습니다.
- 레지스트리 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Servicing 키의 RepairContentServerSource 매개변수
- 또는 그룹 정책 '선택적 구성 요소 설치 및 구성 요소 복구에 대한 설정 지정'(이 정책은 위 레지스트리 값을 변경함)
참고: 그룹 정책 '선택적 구성 요소 설치 및 구성 요소 복구에 대한 설정 지정'은 GPO의 컴퓨터 구성 → 관리 템플릿 → 시스템 섹션에 있습니다. 정책을 '사용'으로 설정하고 OS 배포 디렉터리 경로(대체 원본 파일 경로)를 지정합니다. 서버가 온라인 업데이트를 시도하지 않도록 하려면 'Windows Update에서 페이로드 다운로드 시도 안 함(Never attempt to download payload from Windows Update)' 옵션에 체크합니다.
설치 결과 확인
.NET Framework 3.5가 제대로 설치되었는지 확인하려면 C:\Windows\Microsoft.NET\Framework64 디렉터리로 이동하여 v3.5 폴더가 생성되었는지 확인합니다.
설치에 실패할 때 추가 해결 방법
앞서 소개한 .NET Framework 3.5.1 설치 방법으로도 문제가 해결되지 않는다면 다음 방법들을 시도해 보세요.
0x800f081f 오류 해결하기
일부 업데이트 적용 후에는 시스템의 Windows Server 2012 R2 빌드 버전이 보유 중인 배포 이미지의 OS 버전과 더 이상 일치하지 않을 수 있습니다. 이 경우 설치 프로그램은 Windows 커널 버전을 비교하는 과정에서 구버전 구성 요소의 설치를 거부합니다. 이때 dism으로 설치를 시도하면 일반적으로 0x800f081f. 원본 파일을 찾을 수 없습니다(The source files could not be found) 오류가 발생합니다.
이 문제를 해결하려면 Microsoft 서버에서 온라인으로 .NET Framework를 설치해 보세요.
- 현재 Windows Update 설정을 reg 파일로 백업합니다(HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate 키)
- 해당 키를 삭제한 뒤 WU 서비스를 재시작합니다:
net stop wuauserv & net start wuauserv - .NET 3.5 온라인 설치를 실행합니다:
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All - 설치가 완료되면 reg 파일을 다시 가져와 WU 설정을 복원하고 WindowsUpdate 서비스를 재시작합니다
팁: 향후 이 서버의 C:\Windows\winsxs 폴더를 활용하면 동일한 OS 버전이 설치된 다른 서버에도 .NET Framework 3.5를 설치할 수 있습니다. C:\Windows\winsxs 폴더를 대상 서버의 C:\tmp\winsxs 디렉터리로 복사한 후 다음 명령으로 구성 요소를 설치합니다.dism /online /enable-feature /featurename:NetFX3 /all /Source:C:\tmp\winsxs /LimitAccess
언어 팩 및 업데이트 점검
서버에 언어 팩(Language Pack)이 설치되어 있다면 .NET Framework 3.5.1을 설치하기 전에 lpksetup 명령을 사용해 언어 팩을 먼저 제거해야 합니다.
또한 설치된 시스템 업데이트 목록에 NET 3.5 Framework용 패치가 포함되어 있는지 확인합니다(NetFX3 구성 요소가 설치되어 있지 않다면 이론상 이러한 패치가 설치되어 있으면 안 됩니다).
해당 업데이트를 제거한 후 재부팅하고 .NET 3.5 설치를 다시 시도합니다.