Hầu hết các ứng dụng Windows hiện đại đều yêu cầu .NET Framework để hoạt động đúng. Trình hướng dẫn cài đặt vai trò và tính năng Server Manager trong Windows Server 2012 R2 cho phép cài đặt hai phiên bản khác nhau của .NET Framework cùng một lúc – 3.5 và 4.5. Việc cài đặt .NET Framework 4.5 thường không gây ra bất kỳ vấn đề nào – nó rất đơn giản, tuy nhiên, bạn không thể nói chính xác điều tương tự về việc cài đặt .NET Framework 3.5.
Thực tế, khi cố gắng cài đặt .NET Framework 3.5 trong Windows Server 2012 R2 với cài đặt tiêu chuẩn, thông báo lỗi sau xuất hiện: “Installation of one of more roles, role services or features failed. The source files could not be found…”.
Lý do đằng sau hành vi này là các tệp nhị phân .NET Framework 3.5 không phải là một phần của bộ nhớ cache cục bộ của các tệp nhị phân được lưu trên ổ đĩa hệ thống của máy chủ khi hệ điều hành đang được cài đặt. Điều này được thực hiện theo khái niệm Features on Demand trong Windows Server 2012 để giảm lượng không gian đĩa bị chiếm dụng bởi hệ điều hành cho nhu cầu riêng của nó.
Kiểm tra xem .NET Framework 3.5 có trong kho lưu trữ cục bộ không bằng lệnh Powershell:
Get-WindowsFeature *Framework*
Như bạn thấy, thành phần bắt buộc bị xóa (Install State: Removed).
Mặc định, khi bạn cài đặt NET Framework 3.5 thông qua Server Manager, hệ thống cố gắng lấy các tệp cần thiết từ trang web Windows Update qua Internet (không từ máy chủ WSUS cục bộ), và nếu máy chủ không có quyền truy cập Internet, cài đặt sẽ thất bại. Người dùng cần chỉ định đường dẫn đến bản phân phối hệ điều hành từ đó thành phần bị thiếu có thể được cài đặt.
Để cài đặt .NET Framework 3.5 thủ công, nhấp vào Specify an alternative source path để nhập đường dẫn thay thế đến thư mục chứa đĩa cài đặt Windows Server 2012 R2.
Mẹo. Đĩa cài đặt phải chứa cùng phiên bản hệ điều hành mà bạn đã cài đặt (cùng phiên bản, ngôn ngữ và cập nhật là quan trọng). Nếu trình cài đặt không tìm thấy các tệp bắt buộc trong thư mục được chỉ định, hãy xem giải pháp bên dưới.
Là đường dẫn, bạn có thể chỉ định thư mục cục bộ (trong ví dụ của chúng ta là D:\source\sxs, nơi D:\ là ký tự ổ DVD cục bộ với bản phân phối Windows Server), hoặc thư mục mạng.
Bằng cách nhấp OK, hệ thống sẽ tìm thấy nhị phân .NET Framework 3.5 và cài đặt thành phần.
Cùng thao tác có thể được thực hiện từ command prompt bằng cách chạy lệnh sau với tư cách quản trị viên:
dism /online /enable-feature /featurename:NetFX3 /all /Source:d:\sources\sxs /LimitAccess
/Online nghĩa là bạn cần nâng cấp hệ điều hành hiện tại của mình, chứ không phải hình ảnh wim
/enable-feature/featurename: NetFX3/all nghĩa là cần cài đặt .NET Framework 3.5 với tất cả các tính năng của nó
/Source là đường dẫn đến thư mục với bản phân phối Windows, chứa các thành phần cần thiết
/LimitAccess ngăn chặn truy cập Windows Update
Cùng thao tác trong PowerShell để cài đặt .Net 3.5 trông như sau:
Add-WindowsFeature NET-Framework-Core -Source d:\sources\sxs
Đường dẫn đến bản phân phối Windows gốc có thể được đặt trong hệ thống thường xuyên bằng cách sử dụng:
- tham số registry RepairContentServerSource nằm trong nhánh HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Servicing
- hoặc một chính sách nhóm Specify settings for optional component installation and component repair (chính sách thay đổi cài đặt này trong registry)
Lưu ý. Chính sách nhóm Specify settings for optional component installation and component repair nằm trong phần GPO sau: Computer Configuration -> Administrative Templates -> System. Chính sách nên được bật và đường dẫn đến thư mục với bản phân phối hệ điều hành nên được chỉ định (Alternative source file path). Để ngăn máy chủ cố gắng cập nhật trực tuyến, hãy tích hộp Never attempt to download payload from Windows Update.
Để xác minh rằng .NET Framework 3.5 đã được cài đặt, hãy đi tới thư mục C:\Windows\Microsoft.NET\Framework64 và đảm bảo thư mục v3.5 xuất hiện.
Nếu các phương pháp cài đặt .NET Framework 3.5.1 được mô tả ở trên không giúp bạn, hãy thử các giải pháp sau.
Sau khi cài đặt một số bản cập nhật, phiên bản (build) của Windows Server 2012 R2 trong hệ thống có thể ngừng tương ứng với hình ảnh hệ điều hành được lưu trong hình ảnh phân phối của bạn. Trong trường hợp này, trình cài đặt, khi so sánh phiên bản nhân Windows, từ chối cài đặt phiên bản lỗi thời của thành phần. Trong trường hợp này, thường thì khi bạn cài đặt .NET Framework thông qua dism, lỗi sau xảy ra: 0x800f081f. The source files could not be found
Để khắc phục vấn đề, hãy thử cài đặt .Net trực tuyến qua máy chủ Microsoft:
- Lưu cài đặt Windows Update hiện tại vào file reg (khóa HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate)
- Xóa khóa này và khởi động lại dịch vụ WU:
net stop wuauserv & net start wuauserv - Chạy cài đặt .Net5 trực tuyến:
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All - Sau khi cài đặt hoàn tất, trả lại cài đặt WU bằng cách nhập file reg và khởi động lại dịch vụ WindowsUpdate lần nữa
Mẹo. Trong tương lai, bạn có thể sử dụng thư mục C:\Windows\winsxs từ máy chủ này để cài đặt .Net FrameWork 3.5 trên các máy chủ khác với cùng phiên bản hệ điều hành. Sao chép thư mục C:\Windows\winsxs vào máy chủ mong muốn trong thư mục C:\tmp\winsxs và cài đặt thành phần bằng lệnh:
dism /online /enable-feature /featurename:NetFX3 /all /Source:C:\tmp\winsxs /LimitAccess
Ngoài ra, nếu bạn đã cài đặt Language Packs trên máy chủ, trước khi cài đặt .NET Framework 3.5.1, bạn phải gỡ cài đặt nó bằng lệnh lpksetup.
Cũng kiểm tra xem có bản vá cài đặt cho NET 3.5 Framework trong danh sách các bản cập nhật hệ thống đã cài đặt không (theo lý thuyết, chúng không nên được cài đặt nếu thành phần NetFX3 chưa được cài đặt).
Gỡ cài đặt các bản cập nhật này và sau khi khởi động lại, hãy thử cài đặt .NET 3.5.