Hi folks,
I’m, trying to improve the “silent install” capabilities of our driver
package. Currently it works well enough for customer release, but I’m
wanting to do a fully automated silent install in all cases for our
internal automated test facilities - and I’ve come up against a problem.
Our device co-installer keeps a ref-count of installed physical devices
on the system. When there are physical devices in the box, we create a
root-enumerated dev-node, and install the driver for it.
On the whole, it generally works well. Our drivers are authenticode
signed (but not WHQL signed, because they’re internal test drivers -
automatically built, loaded and tested). For most versions of windows
that we test on, the silent install works, provided we install our
root-test signing certificate, and set the driver signing config on the
machine appropriately (i.e. test signing allowed).
However, on Win2k3, there are several problems:
-
If we have a device coinstaller, even though it doesn’t present any
UI, we can’t do true silent installation or uninstallation. -
Using DPInst we set the “supress wizard” option. The supress wizard
mode stops the pages appearing as a result of the install.
Unfortunately, if “add hardware” wizard is already present, then the
supress-wizard mode (which is not a quiet install) blocks, in the same
way that all “noisy” installs block, to allow the GUI component of the
install to complete. -
This is specifically a problem with our test framework because (as a
result of uninstall issues (1)) the framework tends to clean out the
previous install using “devcon remove”, and “pnputil -d”. It then does a
“devcon rescan”, to get our PCI devices to be re-detected, but
unfortunately, this causes the wizard to appear, and any subsequent
attempts to install the drivers block until a user intervenes.
For OS’s after 2k3, we can turn test signing mode on, make our code
signing certificate trusted, and it all just “works magically”. How do
we do this for 2k3? Absolutely any and all hacks accepted - this is for
internal test use only - we could even go as far as automating debugger
intervention to set flags / memory if necessary (although it would be a
pain!).
MH.