None seemed to be specific on registry checks without file version check.
Registry checks by themselves, without file checks, are notoriously unreliable EXCEPT when used to determine if a product is NOT installed.
The absence of a registry KEY is always a great indicator that a product is not installed.
As such, the best place to use such rules is typically in the Prerequisite Ruleset.
Ergo, you can test for the absence of the "Visual Studio" key to determine that the update is not applicable,
but to determine that an update IS applicable, you should really test for one or more of the actual *FILES* (by File Version) that are going to be replaced by the update.
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\11.0\VC\Runtimes\x64]
"Version"="v11.0.61030.00"
"Installed"=dword:00000001
"Major"=dword:0000000b
"Minor"=dword:00000000
"Bld"=dword:0000ee66
"Rbld"=dword:00000000
Can anyone give me the proper Applicability Rule and Installed Rule to check if it's there to not install it and if it isn't to go ahead and install?
First, since you're apparently checking a VALUE in the registry, it now matters which of the four "Registry Value" rules you're actually using:
- Registry DWORD Value
- Registry Expand String Value
- Registry String Value
- Registry Version in String
Since you're looking for a four-part dotted decimal value, it should be stored in a STRING value, and you should be using the "Registry Version in String" rule type.
Second thing I'll note is that the VALUE for your "Version" field is incorrectly formatted. It should be a simple four-part dotted decimal number. Lose the preceding 'v'.
e.g. "Version"="11.0.61030.0"
If the VENDOR stores that value with a preceding 'v', then you'll have to use the Registry String Value rule type, and you can ONLY test for equality.
Third, and potentially problematic depending on the above, an Applicability Rule should always be defined as a LESS THAN comparison, so for Applicability you're not looking for something that matches, you're looking for something that's older than what it should be, and you want it to evaluate as TRUE (TRUE that the version currently on the system is OLDER than the version that will be put on the system if the update is applicable). For the Installed Rule, you should be looking for something that matches (i.e. EQUAL TO) -- the *correct* version is already here.
Finally, since it seems that you're testing for a 32-bit app on a 64-bit system, rather than explicitly checking the 'Wow6432Node', try checking the natural node, and checking the "Use 32 bit registry" checkbox. One of the advantages of doing this is that you can then use the same package for BOTH 32-bit systems AND 64-bit systems. The rule as implied above can only be used on 64-bit systems. (Although I'm curious that you'd be checking for something in the x64 subnode of ~\Runtimes in the Wow6432Node.)