Helge Kruse
2011-12-11 19:11:25 UTC
The WiX help recommends to deploy the Visual C++ runtime using merge
modules. I refer to section "How To: Install the Visual C++
Redistributable with your installer". While this is possible, I don't
want to include the MSM in every MSI I will generate. Instead I prefer
to add this to the bootstrapper with Votive and MSBuild.
But this would allow installing a C++ program that might will not run,
when the bootstrapper is not used but the MSI is ran directly. Therefore
I would like to check if the required version of the C++ run time is
installed on the target system. This could be done with a
RegistrySearch. But this allows only accessing registry values. I would
like to do something like this:
<Property Id="VC80_CRT_762">
<RegistrySearch Id="Vc80_Crt_762" Root="HKLM"
Key="SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Installations\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_e889b656\downlevel_manifest.8.0.50727.4407"
Name="?????" Type"=raw" />
</Property>
<Condition Message="This application needs a newer version of the VC++
run time.">
<![CDATA[Installed OR VC80_CRT_76"]]>
</Condition>
How can the condition distinguish between "an empty default value" and
"key not in registry"?
How can this test achieved?
What is the best way to check that the required or a newer version of
the VC++ runtime is installed?
Regards,
Helge
modules. I refer to section "How To: Install the Visual C++
Redistributable with your installer". While this is possible, I don't
want to include the MSM in every MSI I will generate. Instead I prefer
to add this to the bootstrapper with Votive and MSBuild.
But this would allow installing a C++ program that might will not run,
when the bootstrapper is not used but the MSI is ran directly. Therefore
I would like to check if the required version of the C++ run time is
installed on the target system. This could be done with a
RegistrySearch. But this allows only accessing registry values. I would
like to do something like this:
<Property Id="VC80_CRT_762">
<RegistrySearch Id="Vc80_Crt_762" Root="HKLM"
Key="SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide\Installations\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_e889b656\downlevel_manifest.8.0.50727.4407"
Name="?????" Type"=raw" />
</Property>
<Condition Message="This application needs a newer version of the VC++
run time.">
<![CDATA[Installed OR VC80_CRT_76"]]>
</Condition>
How can the condition distinguish between "an empty default value" and
"key not in registry"?
How can this test achieved?
What is the best way to check that the required or a newer version of
the VC++ runtime is installed?
Regards,
Helge