Burn system searches
Searches are used to detect if the target machine meets certain conditions. The result of a search is stored into a variable. Variables are then used to construct conditions. To author Burn searches, you need to reference the WixToolset.Util.wixext WiX extension.
The following searches are available:
A search can be dependent on the result of another search. To order searches, use the After attribute to schedule a search to take place after another search, when the variable from the first search has a value with the results of that search.
Here are some examples:
<util:RegistrySearch
    Id="RegistrySearchId64"
    Variable="RegistrySearchVariable64"
    Root="HKLM"
    Key="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full"
    Value="Release"
    Result="value"
    Bitness="always64" />
<util:ProductSearch
    Id="ProductSearchId"
    Variable="ProductSearchVariable"
    UpgradeCode="{8C74C610-AB2A-4BFB-9FC6-8683A9100424}"
    Result="version" />
<util:DirectorySearch
    Id="DirectorySearchId"
    Variable="DirectorySearchVariable"
    Path="[WindowsFolder]System32"
    DisableFileRedirection="yes" />
<util:FileSearch
    Id="FileSearchId"
    Variable="FileSearchVariable"
    After="DirectorySearchId"
    Path="[DirectorySearchVariable]\mscoree.dll"
    Result="exists" />
<util:WindowsFeatureSearch
    Id="DetectSHA2SupportId"
    Variable="IsSHA2Supported"
    Feature="sha2CodeSigning" />