When using -installapps $false when capturing a FFU, a Critical Process Died BSOD would happen when deploying the FFU and Windows attempted to load.
When capturing the FFU, the registry is loaded to grab the Windows version information to create the FFU file name. After unloading the registry, the FFU is captured. This process can happen too fast on certain hard drives (NVME). A 15 second delay was added after the unloading of the registry to allow for the process to complete before the FFU is captured.
Included some better error handling if defining optionalfeatures that require source folders (netfx3). ESD files don't have source folders like ISO media, which means installing .net 3.5 as an optional feature would fail. Also cleaned up some formatting.
Optimize-FFU is broken due to the Recovery partition not having a name. dism checks for the presence of a name for each partition and if it doesn't have one, optimize-FFU breaks. The fix is in the ffuprovider.dll in the 25255 branch, which is in the Insider ADK. The public release for that isn't coming soon, and using the Insider ADK requires test signing/test mode to be turned on and secureboot disabled. This causes issues with systems that have virtualization-based security. Due to this, changing the code back to not creating a recovery partition while building the FFU, and creating the recovery partition during deployment and then letting Windows copy in and configure WinRE after. Later this year, whenever the ADK gets released, I'll update the script to revert this behavior.