3 Replies Latest reply on Jun 30, 2012 9:59 AM by Lawrence Garvin

    Unexpected Installed Rule Behavior

    strict

      I have created a package with two prerequisite rules, one WMI query that looks to the computer model (SELECT * FROM Win32_ComputerSystem WHERE Model = 'OptiPlex 990') and another Basic rule that looks to the Windows Version (Greater Than or Equal To 6.1.1.0 Workstation).  However the package is showing 'Installed' on computers that do not match either Prerequisite rule.  My only Installed rule is a WMI query that looks to the SMBBIOSBIOSVersion (SELECT * FROM Win32_BIOS WHERE SMBIOSBIOSVersion = 'A05').  Computers that match the Installed rule but do not match the Prerequisite rule(s) are showing up as 'Installed'.

       

      I supposed the obvious fix would be to add my Prerequisite rules to my Installed rules and call it done.  However I expected my Prerequisite rules to effeminate the need for that.  Wondering what I am missing?

       

      Not sure that it matters but I have two Applicability rules, both WMI queries:

      SELECT * FROM Win32_BIOS WHERE SMBIOSBIOSVersion < 'A05'

      SELECT * FROM Win32_BIOS WHERE SMBIOSBIOSVersion >= 'A00'

       

      Thanks!

       

      -mark

        • Re: Unexpected Installed Rule Behavior
          Lawrence Garvin

          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.

            • Re: Unexpected Installed Rule Behavior
              strict

              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!

               

              -mark

                • Re: Unexpected Installed Rule Behavior
                  Lawrence Garvin


                  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?