The VC++ runtimes are generally installed as a prerequisite for other applications, and usually they require a specific version. I.E. removing VC++ 2019 may break whatever application required it. It’s common to have several versions on the same machine.
What’s usually important is to stay at the latest release level within a version. I.e. “if you have version 14, it should be at least 14.13.26020”. We would commonly handle that with a relevance query like
exists values "Version" whose (it as string as version = "14" and it as string as version < "14.13.26020" as version) of keys ("HKLM\SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64"; "HKLM\SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x86" ) whose (value "Installed" of it as string = "1") of x32 registry
This would return True if version 14 is installed, but it’s below 14.13.26020 - you have a version 14 that is installed and should be patched to a higher build.
Alternatively, if you want to deploy VC 14 on systems that do not have an existing VC14 install, you might instead use
not exists values "Version" whose (it as string as version = "14" and it as string as version >= "14.13.26020" as version) of keys ("HKLM\SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64"; "HKLM\SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x86" ) whose (value "Installed" of it as string = "1") of x32 registry
The check for both version 14 and 14.0.26020 avoids the false-negative if VC2019 is installed (it fails to match the ’ version=“14” ’ part