Coincidentally I was doing some Windows testing, botched my install, and because of the dual NVMe I couldn't reinstall.
I really want to avoid removing my SSD because the nature of my build and location makes it extra hassle.
I think I have a way around it. It's not exactly noob friendly though.
What I found is Windows 10 installer doesn't seem to write properly to it's own EFI drive for some reason.
I started here as a basis:
https://www.tenforums.com/tutorials/84331-apply-windows-image-using-dism-instead-clean-install.html
There are screenshots and more details there. Where we have to differ is step 2.9 (see my step 9 for how and why).
What I do:
1. Use the Windows 10 booted installer to delete all partitions on the Windows drive. This should be disk 0 if Windows is on the top NVMe drive as is the case with me.
2. Create new partition, accept warning that other partitions will be created.
3. Windows should have created 4 partitions on the drive. The last, and largest on that drive, format it. This makes it NTFS.
4. Press Shift+F10 to open the command prompt.
5. Run diskpart and then list vol from that prompt. We want to find the drive letter that was assigned to that new partition. It helps not having any unnecessary NTFS drives plugged in. We can also open this before we create the new drives and check before and after. Whatever helps but we must get the correct drive. We also want the drive letter the USB/CD/whatever you booted from.
6. We need to know the "index" of the version of Windows we want to install. If your Windows install offers a list of editions, this matches that. So if it lists Professional as the third option, your index is 3. You can run commands on the install.wim to determine this otherwise.
7. Run
Code:
dism /Apply-Image /ImageFile:MYBOOTINSTALLERDRIVELETTER:/sources/install.wim /Index:MYINDEX /ApplyDir:MYNEWPARTITIONLETTER:/
8. Wait for this to succeed. It is extremely important to get these right.
9. Normally we could now run
Code:
MYNEWPARTITIONLETTER:/Windows/System32/bcdboot.exe MYNEWPARTITIONLETTER:/Windows
to initialize the Windows EFI partition, but this fails.
Instead we will run
Code:
MYNEWPARTITIONLETTER:/Windows/System32/bcdboot.exe MYNEWPARTITIONLETTER:/Windows /s MYNEWPARTITIONLETTER:
What this does is dump the EFI folder to the root of the Windows drive, which should now have a half-baked Windows install on it. I tested in a VM and discovered I could move this to the Windows EFI partition, which we can't write to on our multiple drive Hackintosh in Windows setup.
So my theory which I will test tonight is that we should be able to boot back into our Hackintosh install, copy the EFI folder to the Windows EFI partition (I don't know if we will run into issues leaving that behind, as we can't delete from NTFS without tweaks, so that's why I said copy), and reboot.
On a VM, moving the created EFI folder from the Windows partition to the EFI partition where it should be and then closing setup and booting from the Windows drive continues the next stages of Windows setup as expected.
I'll test tonight and see if it throws up any gotchas and if not, this is a way to install Windows without removing the bottom NVMe. Doing that in my case is far more of a hassle than this method, but I have years of experience messing around with these parts of Windows.
I would assume the reason things fail is because Windows is bugged in some way and fails to write to it's own EFI. The bcdboot.exe fails too, that's where I got stuck last night. On a system without this issue the command without /s DriveLetter would properly build the EFI and then you could just close Windows setup and reboot and it work. If the latter command works on Hackintosh then I don't see any reason booting into another OS that allows moving that folder to it's proper partition won't work as well.