In my WiX installer for my Xen drivers, I install my bus driver and all
the drivers for the children of the bus driver. I install the child
drivers first and then the bus driver so that the child drivers are
already there when the bus driver enumerates PDO’s for them and the user
doesn’t get the driver selection screen.
Unfortunately, after the bus driver is installed, the installer assumes
that it’s all good and continues with the installation. The problem with
this is that the PDO’s may not have the driver attached to them yet
which is disasterous if the user hits reboot before this happens - the
bus driver tells Xen to remove the emulated PCI disk and network drivers
when it becomes active leaving the system with no boot device.
Additionally, I have a small exe that is supposed to run on first
install to optionally (chosen by the user at install time) copy the
network configuration (IP Addresses etc) from the emulated PCI network
devices to my new PV device - if you’ve ever booted up a DC with no IP
address you’ll know why this is a good idea
I’m not really a wizard with WiX, and I’ve been tinkering trying at the
very least to present the user with a screen to allow them to proceed
after first making sure all the installation has happened correctly (eg
they check Device Manager manually). Unfortunately I don’t think WiX
works this way and interrupting the actual install once it has started
isn’t something that is good to do.
My next idea is to create a little app (or even vbscript…) that runs
in a loop and every few seconds examines the system to firstly make sure
that the bus driver has enumerated some PDO’s, and secondly check that
FDO’s are installed for all of them. It will only exit (allowing
installation to continue) once this has happened. I’ll include a timeout
too just so it doesn’t hang there forever. Does that sound reasonable?
Is perusing the registry to make sure that everything enumerated by my
bus driver has a device attached a good approach or is there a better
way?
Thanks
James