IMPORTANT ANNOUNCEMENT FOR OUR READERS!
AskPFEPlat is in the process of a transformation to the new Core Infrastructure and Security TechCommunity, and will be moving by the end of March 2019 to our new home at https://aka.ms/CISTechComm (hosted at https://techcommunity.microsoft.com). Please bear with us while we are still under construction!
We will continue bringing you the same great content, from the same great contributors, on our new platform. Until then, you can access our new content on either https://aka.ms/askpfeplat as you do today, or at our new site https://aka.ms/CISTechComm. Please feel free to update your bookmarks accordingly!
Why are we doing this? Simple really; we are looking to expand our team internally in order to provide you even more great content, as well as take on a more proactive role in the future with our readers (more to come on that later)! Since our team encompasses many more roles than Premier Field Engineers these days, we felt it was also time we reflected that initial expansion.
If you have never visited the TechCommunity site, it can be found at https://techcommunity.microsoft.com. On the TechCommunity site, you will find numerous technical communities across many topics, which include discussion areas, along with blog content.
NOTE: In addition to the AskPFEPlat-to-Core Infrastructure and Security transformation, Premier Field Engineers from all technology areas will be working together to expand the TechCommunity site even further, joining together in the technology agnostic Premier Field Engineering TechCommunity (along with Core Infrastructure and Security), which can be found at https://aka.ms/PFETechComm!
As always, thank you for continuing to read the Core Infrastructure and Security (AskPFEPlat) blog, and we look forward to providing you more great content well into the future!
In one of my prior posts, I mentioned a step required when installing .Net Framework 3.5 on Windows Server 2012 or later operating systems. Specifically, I mentioned the need to supply the source for the .Net files because this is one of the few components we do not stage to the component store on Windows Server 2012 and later. One of the bullets in the things to keep in mind section at the bottom of this blog reads:
If you are attempting to install .Net Framework 3.5 on Windows Server 2012, instead of specifying the install.wim, you need to specify the Sources\SxS directory on the DVD or if providing the source, the files in the SXS directory copied from the DVD are just for .Net Framework 3.5. You can host them on a share and supply them through the GUI or through Group Policy just like any other feature.
Recently one of my customers ran into an issue when attempting to install .Net Framework 3.5 on Windows Server 2012 R2 using the following command:
Install-WindowsFeature –name NET-Framework-Core –source F:\sources\sxs
F:\ is the mounted Windows Server 2012 R2 ISO.
Yet it still failed with the following error:
The request to add or remove features on the specified server failed. The source files could not be downloaded. Use the "source" option to specify the location of the files that are required to restore the feature. Error: 0x800F0906
Or if you doing this via the GUI, it will look something like the following:
Looking at the cbs.log file from the C:/Windows/logs/cbs directory, we see the following:
2014-09-22 14:27:18, Info CBS Not able to find package: Package_78_for_KB2966828~31bf3856ad364e35~amd64~~220.127.116.11 from the cached windows update index. [HRESULT = 0x800f090e – CBS_E_EMPTY_PACKAGE_MAPPING_INDEX]
2014-09-22 14:27:18, Info CBS Failed to find package: Package_78_for_KB2966828~31bf3856ad364e35~amd64~~18.104.22.168 from the index mapping [HRESULT = 0x800f090e – CBS_E_EMPTY_PACKAGE_MAPPING_INDEX]
2014-09-22 14:27:18, Info CBS Failed to get WU category/updateID for package: Package_78_for_KB2966828~31bf3856ad364e35~amd64~~22.214.171.124 [HRESULT = 0x800f090e – CBS_E_EMPTY_PACKAGE_MAPPING_INDEX]
2014-09-22 14:27:18, Info CBS Failed to get the category and update ID for package: Package_78_for_KB2966828~31bf3856ad364e35~amd64~~126.96.36.199, component: amd64_microsoft-windows-wpfcorecomp.resources_31bf3856ad364e35_6.3.9600.20708_en-us_a3b67b207d2057ab, file: PresentationHostDLL.dll.mui [HRESULT = 0x800f090e – CBS_E_EMPTY_PACKAGE_MAPPING_INDEX]
2014-09-22 14:27:18, Info CBS Exec: Missing files are found during staging attempt but failed to download content from WU. [HRESULT = 0x800f090e – CBS_E_EMPTY_PACKAGE_MAPPING_INDEX]
2014-09-22 14:27:18, Info CBS CommitPackagesState: Started persisting state of packages
2014-09-22 14:27:18, Info CBS CommitPackagesState: Completed persisting state of packages
2014-09-22 14:27:18, Info CSI 00000010@2014/9/22:19:27:18.968 CSI Transaction @0x69943b49e0 destroyed
2014-09-22 14:27:18, Info CBS Perf: Stage chain complete.
2014-09-22 14:27:18, Info CBS Failed to stage execution chain. [HRESULT = 0x800f0906 – CBS_E_DOWNLOAD_FAILURE]
2014-09-22 14:27:18, Error CBS Failed to process single phase execution. [HRESULT = 0x800f0906 – CBS_E_DOWNLOAD_FAILURE]
So why are we getting these errors despite supplying the source?
We released a security update in August 2014 that updates .Net components. The security updates are as follows:
If either of these updates are installed, you will run into the above issue if your server does not have access to the Internet to pull the updated components.
How do we resolve this?
Since this customer’s servers do not have internet access, in their case, they did the following:
1) Uninstalled the security update
2) Installed .Net Framework 3.5 (which installed without error)
3) Reinstalled the update
A fixit package just released for this issue. Please install the update in the following article to correct this issue:
Take a look at the following TechNet article for .Net Framework 3.5 deployment considerations:
Here’s a link to the official Knowledge Base article on this issue:
How do you keep from running into this in the future?
I personally recommend that you proactively enable .Net Framework 3.5 on the server images and templates in your environment to prevent having to troubleshoot or take additional steps such as this going forward.
~ Charity .net Shelbourne