sample.xml

<Component>
    <!-- An optional friendly name for the component -->
    <FriendlyName></FriendlyName>
 
    <!-- Optional configuration to customise component detection -->
    <Detection>
        <!--
            Specifies the method used to detect the availability of the component
 
            Can be one of:
             - Automatic: The default method when none is specified. Attempts to automatically
                            detect the component by retrieving the list of installed programs from
                            the Windows Registry and searching for a case insensitive wildcard match
                            against the component name. The matching logic can be customised via the
                            optional MatchRegEx, MatchCase and MatchPattern elements.
             - Static: Always use the availability state provided in the Availability element.
        -->
        <Method></Method>
 
        <!-- Selects either wildcard (default) or regular expression matching -->
        <MatchRegEx>False</MatchRegEx>
 
        <!-- Selects either case insensitive (default) or case sensitive matching -->
        <MatchCase>False</MatchCase>
 
        <!--
            The pattern used for matching against the Windows Registry keys. If undefined or blank
            we'll match against any Registry key where the component name is a substring of the key.
        -->
        <MatchPattern></MatchPattern>
 
        <!--
            Only used when the detection method is "Static" in which case this is required
 
            Can be one of:
             - Available: The component was detected
             - Unavailable: The component was not detected
             - Ignored: The component will be ignored. This is distinct from the
                                    "Unavailable" state as it indicates the component is not
                                    available for the platform.
             - AlwaysInstall: The component will always be installed
             - NeverInstall: The component will never be installed
             - DetectionFailure: A failure occurred during component detection
             - NoLogic: No detection logic was available
        -->
        <Availability></Availability>
    </Detection>
 
    <!-- Optional configuration to customise component installation path -->
    <InstallPath>
        <!--
            Specifies a special folder from the Environment.SpecialFolder enumeration
 
            This setting can be used in two ways to modify the destination for symlinking:
             - If no <Destination> is specified the component will be symlinked directly into the
               specified special folder.
             - If a <Destination> is specified it will be used as a *suffix* to the nominated
               special folder. That is, the <Destination> path is relative to the special folder.
 
            The default behaviour is particularly important to note:
             - If not specified the default is to use the "UserProfile" special folder ($HOME).
             - If a <Destination> folder is specified without a <SpecialFolder> then *no* special
               folder is used and <Destination> is considered to be an absolute path.
 
            See: https://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx
        -->
        <SpecialFolder></SpecialFolder>
 
        <!--
            Specifies an absolute or relative destination path subject to <SpecialFolder>
 
            This setting specifies an absolute or relative filesystem path as the destination for
            component symlinking. The path is considered absolute *only if* no <SpecialFolder> is
            specified. Otherwise, this path is considered to be relative to the special folder.
 
            If no <Destination> is specified then only the <SpecialFolder> path will be used.
        -->
        <Destination></Destination>
 
        <!--
            Specifies whether component symlinks should be hidden by setting the "Hidden" and
            "System" file attributes. The default is not to hide newly created symbolic links.
        -->
        <HideSymlinks>False</HideSymlinks>
    </InstallPath>
 
    <!-- Optional configuration of relative paths which should be ignored -->
    <IgnorePaths>
        <!-- Each relative path to ignore should be placed in a <Path> element -->
        <Path></Path>
    </IgnorePaths>
</Component>