The PreRequisite Rules have nothing to do with whether an update is reported as Installed. PreRequesite Rules simply give you a way to unilaterally exclude an update from further applicability consideration (e.g. the machine is not Windows 7 SP1 and it's not an OptiPlex 990). You appear to have a good set of Applicability Rules.
If the Installed Rules evaluate to true, the update is reported as Installed, and the PreRequisite Rules and Applicability Rules are irrelevant. If you want the update to only report as Installed on OptiPlex 990 systems with Windows 7 SP1 installed, then you'll need to enhance the Installed Ruleset so that those criteria are met also. This is probably a useful thing where 'A05' by itself is not a unique BIOS identifier across all Dell systems.
For excellent samples on how to specify rules for Dell systems, I would suggest inspecting the BIOS update packages contained in the Dell update catalog.
Very cool. Thank you for the clarification that Prereq rules do not influence Installed rules. I have spoke to support about this, and it seems they themselves did not fully understand that. I had looked at the Dell rules and that is where I go the idea to use the WMI queries and basically and to learn the WQL language. Pretty handy, but difficult to troubleshoot. I have actually found going the registry is preferred with one exception and I am interested in your thoughts on this. With WMI (WQL) you can do a greater/less than call on any string. With registry you can only do a greater/less than call on a number. In the case of DELL there is an A in front of their bios version which prevents PM from using a registry call. Dell solves this by using WMI, but they look to the version which is a complicated an apparently unpublished set of numbers. In the end I seem to be getting better results using REG calls where I can. I will go back and update my Installed rules accordingly.
I appreciate your time Lawrence, Thank you!
You can do comparison on strings in the registry, but only with respect to the specific contents of that string (e.g. Starts With, Contains).
The Registry DWORD Value rule allows you to do comparisons on DWord (integer) values.
The Registry STRING Value rule allows you do to comparisons on String values.
What is the specific use-case where you would need to do a greater/less comparison on a string value in the registry?