I’ve noticed on Win8.1 x64 that I can add my USB driver package without the device connected, and have it automatically install on next connection. So far this has worked in every permutation of usage I’ve tested, which seems great. With the right devcon incantations of package removal and adding, it works for updates, too. This is a non-WHQL driver.
Unfortunately, on Windows 7 x64 I can’t reliably do this more than once. What happens is that the old version of the driver still exists at system32\drivers and is still associated with the (disconnected) USB device. I can’t see any way of getting rid of, or updating that old driver installation in order to forcibly upgrade it to a new version of my driver – at least while the device is disconnected.
If Microsoft changed this for Win8.1, that’s wonderful, but currently I also need to support Win7 and Win8, where we consistently see the above problem in our testing.
From googling and reading previous OSR forum discussions, many people have evidently struggled with this. I would be willing to go to a fair amount of trouble if there’s any way to improve the update process, since my users will have multiple different hardware devices that the driver matches. In fact, they are even likely to share access to these (multi-port) audio mixer devices at their musical gigs. So I can’t predict when they will plug something in.
My questions:
- Must a non-WHQL PNP USB device be connected during driver installation in order to upgrade the driver from a previous version reliably?
- Is my only option to run some kind of Windows service to detect when a device is connected with the old driver and offer to launch an installer?
- Would I have this same problem with a WHQL driver? (Guessing yes.)