One of my co-workers has recently asked me for help with a C++ code sequence that detects the operating system version and service pack level. It was a code sequence I’ve written a few years ago and it has run fine since (integrated in a setup bootstrapper).
However, a customer has recently reported that she has installed SP1 on a Windows 7 system and then launched the setup; setup still reported that SP1 was not installed.
Checking the logs showed that the bootstrapper was detecting a Windows 7 system without SP1, while the customer insisted she has installed SP1.
We were puzzled for quite some time, until my coworker finally got to the bottom of it.
First, the customer has installed all available updates from the Windows Updates site, EXCEPT Windows 7 SP1. Bootstrapper correctly reported “NO SP1 INSTALLED”!
Somehow then she managed to install SP1, but ignored the request to reboot the system. Again, bootstrapper correctly reported “NO SP1 installed”!
And then she had a corrupted installation media; bootstrapper correctly reported “You have a corrupted installation media”, however the customer misread the error message and said again that our code was at fault.
Now, a technical person from the customer is going to visit us, to find out what happened with this particular bug; he’ll be in for a treat.
So, the conclusion is clear: train your customers as much as possible, if you know you’ve properly tested your software, don’t doubt it, look for human error first.