How to install Windows 10 1809 “Features On Demand” Without Internet Access
As it involves quick reflexes and hand-eye coordination, this post may qualify as Jacques Bensimon’s weirdest ever. You be the judge:
I recently started creating a new Microsoft Windows 10 Build 1809 image at a client (happens to be the LTSC flavor, but that’s not relevant here). For reasons we need not go into, the machine on which the build is being done has no Internet access, nor is the option to even temporarily give it access available. No problem (I thought), done it before: install Windows from ISO, use WSUS and/or downloads from the Windows Update Catalog site for updates, and add any required additional features (“Features On Demand”, aka FODs) from downloadable CAB files. I soon discovered, however, that unlike for previous Windows 10 builds through 1803, FOD CABs are no longer available for download as of build 1809, and that (per this article, for example) they are only found on a separate “FOD ISO” officially available only to “Windows OEMs” (presumably the Dells , HPs, and Lenovos of this world) and Microsoft “Device Partners” (the hardware folks) – no idea why that is! I did come across a rumor that it may be available to MSDN subscribers, but I have not been able to confirm it or locate it via that avenue (anybody?). According to the mentioned article, lowly IT Professionals can get their hands on Language Packs, via their Volume Licensing site, but no mention of other FOD types.
So, what to do? My first thought was to try to locate the CABs on an Internet-connected machine (of the same build & bitness) on which the FODs I wanted had already been installed (via the “normal” Settings GUI route), but they were nowhere to be found after installation. My next thought however did bear fruit: what if the CAB corresponding to a given FOD is downloaded and available during the FOD installation, only to later be automatically deleted?
Armed with the (amazing) “Everything” utility that displays an (optionally wildcard-filtered) dynamic listing of every local NTFS file system item (using the NTFS Master File Table & Change Journal rather than tediously “walking” the drives’ directory trees), I was able to confirm that yes, CABs are downloaded and briefly available during FOD installations.
So, here using the example of capturing the “Japanese Supplemental Fonts” FOD CAB and later installing it on a different machine, are the steps I followed:
- On an Internet-connected machine (again, of the same build and bitness as your target machine) that does not yet have the desired FOD installed (more on that later), download and run the Everything utility (of the correct bitness for the OS, elevated), type *.cab in the search/filter bar, and sort on the “Date Modified” column, most recent first (I initially added and used the “Date Created” column, but that turned out to be unnecessary since the CABs are downloaded without their original timestamps) – see the second screenshot below for an idea of what this looks like. Leave the Everything window open in a visible area of the desktop.
- Open the Windows Settings app (making sure you don’t obscure the top few items in the Everything window) and navigate to Apps | Apps & Features | Manage Optional Features | Add a feature, select the desired feature, and (deep breath, get ready to act quickly :-)), click Install. [Note: some language-related FODs, such as language-specific keyboard layouts & input methods, OCR, handwriting, text-to-speech, etc. are installed instead via Time & Language | Language | Add a language – use the Options button to install each component of a new input language separately, so you don’t have to simultaneously capture multiple CABs.]
- Back in the Everything window, you’ll soon see a procession of new small CAB files with uninspiring names appear and disappear at the top of the list – you can ignore those, they’re not what you’re after: you’re waiting for a CAB with a long name descriptive of the FOD being installed to appear at the top of the list, and for its size to stabilize (to ensure it’s been fully downloaded). Once that’s happened, you’ll have several more seconds (but far from an eternity) to copy (Ctrl + drag) the CAB to your Desktop – don’t move the CAB (if it’s even feasible), might freak out Windows! [Note: the longer it takes your machine to install the FOD the better for your purposes, so use the slowest appropriate machine available, i.e. a VM! ;-)]
- Once you’ve captured an FOD CAB file in this fashion and made it available to your offline target machine, you can now install it from an elevated console window using the command
DISM /online /add-package /packagepath:pathcab_name.cab
In this particular example, it was
DISM /online /add-package /packagepath:Microsoft-Windows-LanguageFeatures-Fonts-Jpan-Package~31bf3856ad364e35~amd64~~.cab
As one of my buddies always says (I hope deliberately), Viola!
- If the FOD you’re after is already installed on your Internet-connected machine, or if you’ve followed the above steps but failed to grab a copy of the CAB file in time (or grabbed it prematurely), you can always start over after first uninstalling the FOD in question. In the case of FODs installed from the “Add a feature” panel, it’s generally sufficient to select it in the “Manage Optional Features” panel and click Uninstall. For language-related FODs installed from “Add a language”, using the Remove button for that language in the Language panel may only remove its association with your profile and leave the underlying package installed. Regardless of the FOD, you can always confirm whether its package is installed or not by reviewing the output of DISM /online /get-packages, possibly filtered with Find as in this screenshot:
If an FOD package you wish to re-install from scratch is still present, remove it first using DISM /online /remove-package /packagename:package_identity (where package_identity is whatever was displayed by the previous DISM /get-packages command).
- If you’d like a better idea in advance of the names of the FOD CABs you want to capture (and of their corresponding package identities), you can get them from this page for non-language-related FODs, and from this page for language-related ones.
- This page describes FODs with “satellite packages” that must be installed using DISM’s “/add-capability” rather than “/add-package”. They involve multiple CABs rather than a single one, and would require an adjustment to the above method to capture them all. I had no need for any such FOD on this occasion, so didn’t get around to testing the process.
- Finally, I’ll repeat here again that none of this tomfoolery would be necessary if the “Feature on Demand ISO” were readily available to IT pros, so if any of you reading this know of a legit way to get ahold of it, I for one would sure appreciate you sharing the info in the comments below.
Have a great 2019, everybody!