detect presence of vcredist - using the UpgradeCode
the following logic works fine for the bootstrapper bundle (burn):
<Fragment>
<!-- vcredist 2013 x86 -->
<util:ProductSearch Id="VCREDIST_120_x86"
UpgradeCode="B59F5BF1-67C8-3802-8E59-2CE551A39FC5"
Result="version"
Variable="VCREDIST_120_x86" />
<PackageGroup Id="redist_vc120">
<ExePackage Id="vc120" Cache="yes" PerMachine="yes" Permanent="yes" Vital="yes" Compressed="yes"
SourceFile="redist\VC120_Runtime\vcredist_x86.exe"
InstallCommand="/quiet /norestart"
DetectCondition="(VCREDIST_120_x86 >= v12.0.21005)" />
</PackageGroup>
</Fragment>
to summarize:
- for search it uses
util:ProductSearch
withUpgradeCode
parameter. - for detection it does a version comparison in the
DetectCondition
.
in burn the product detection based on the UpgradeCode obviously works different than in msi (where we can use the upgrade table along with attribute "OnlyDetect" and then configure a "LaunchCondition").
just for reference:
i found the following UpgradeCodes (along with their minimum version) to match ...
x86:
vcredist 2005 x86 - 86C9D5AA-F00C-4921-B3F2-C60AF92E2844, 8.0.61001
vcredist 2008 x86 - DE2C306F-A067-38EF-B86C-03DE4B0312F9, 9.0.30729.6161
vcredist 2010 x86 - 1F4F1D2A-D9DA-32CF-9909-48485DA06DD5, 10.0.40219
vcredist 2012 x86 - 4121ED58-4BD9-3E7B-A8B5-9F8BAAE045B7, 11.0.61030
vcredist 2013 x86 - B59F5BF1-67C8-3802-8E59-2CE551A39FC5, 12.0.40660
vcredist 2015 x86 - 65E5BD06-6392-3027-8C26-853107D3CF1A, 14.0.23506
vcredist 2017 x86 - 65E5BD06-6392-3027-8C26-853107D3CF1A, 14.15.26706
vcredist 2019 x86 - 65E5BD06-6392-3027-8C26-853107D3CF1A, 14.20.27508
x64:
vcredist 2005 x64 - A8D19029-8E5C-4E22-8011-48070F9E796E, 8.0.61000
vcredist 2008 x64 - FDA45DDF-8E17-336F-A3ED-356B7B7C688A, 9.0.30729.6161
vcredist 2010 x64 - 5B75F761-BAC8-33BC-A381-464DDDD813A3, 10.0.40219
vcredist 2012 x64 - EFA6AFA1-738E-3E00-8101-FD03B86B29D1, 11.0.61030
vcredist 2013 x64 - 20400CF0-DE7C-327E-9AE4-F0F38D9085F8, 12.0.40660
vcredist 2015 x64 - 36F68A90-239C-34DF-B58C-64B30153CE35, 14.0.23506
vcredist 2017 x64 - 36F68A90-239C-34DF-B58C-64B30153CE35, 14.15.26706
vcredist 2019 x64 - 36F68A90-239C-34DF-B58C-64B30153CE35, 14.20.27508
EDIT HISTORY:
1) updated the UpradeCode for vcredist 2017 x86 as per Brian Sutherland's comment. VS 2015, VS 2017 and VS 2019 all remain within the same family of 14.*
.
2) added x64 variants to answer the question in Ahmed Daniel's comment. the updated listing mainly has been determined from running a modified version of the solution as suggested in answer https://stackoverflow.com/a/46637095
it's a shame that there's no official documentation by microsoft regarding those specific upgradecodes, but we just have to go and figure out ourselves ...