Software Deployment Question
What Alternative Can I Use to Detect the Presence of the VC++ Runtime When .NET Framework also a Requirement?
I’ve come up against a bump in the road involving C++ 2015 Update 3 detection. First we have an installation package that is not contained in a bootstrap .msi. We’ve also decided not to include the runtime via Merge Modules since they moved a portion out to Windows Update. So, up front we have to detect if the runtime(s) is in place.
So currently we have a C# MSI Custom Action that runs and queries the registry…
HKLM\SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x86 and 64 (on x64 systems) hives to ensure the required version is in place (14.0.242122.0). We grab the version via the registry values Major, Minor, Bld, Rbld, combine and compare to the required version value. If not there we set an MSI property which is hashed out by LaunchConditions action.
Here’s the problem, one of our other requirements is .NET 4.6.1. If the Framework is not in place (Custom Action is compiled to target 4.5.2) the action fails causing total blow up of the install. We don’t even get to LaunchConditions.
The sequence is…
Anyway, I’m wondering if there is an easier way to detect the VC++ runtime. I guess I could try to write a MSI action that is not reliant on the Framework. This was a fairly large oversight on my part and was not caught by QA despite the fact I always tell them to start testing on a system devoid of any of the requirements.
I guess I could use System Search (registry) for the various version segments, but I would still need a widget to combine and compare.
What other language could I write this action/not reliant on the framework. My current action is C# based on the WiX toolkit format.