Metadata.sample.xml

<?xml version="1.0" encoding="utf-8"?>
<Component xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Metadata.xsd">
    <!-- An optional friendly name for the component -->
    <FriendlyName></FriendlyName>
 
    <!--
        Optional path relative to the component directory to use as the source path
 
        When not specified the component directory is treated as the base path. By configuring this
        option you can treat a subdirectory of the component directory as the source path from which
        all symlinks should be generated from.
    -->
    <BasePath></BasePath>
 
    <!-- 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. Installed app packages are also retrieved via the
                           Appx PowerShell module on supported systems. A case insensitive search on
                           the results for any application name containing the component name is
                           then performed. The matching logic can be customised via the optional
                           <MatchRegEx>, <MatchCase> and <MatchPattern> elements.
            - FindInPath: Determines the availability based on the presence of a nominated binary
                           located in a directory found in the system's PATH. Defaults to searching
                           for a binary with the same name as the component directory but this can
                           be customised via the <FindInPath> element.
            - PathExists: Determines the availability based on the existence of a nominated path
                           specified in the <TestPath> element. The path must be absolute and would
                           typically test that a file or directory exists. However, any absolute
                           path that corresponds to an available PowerShell provider is valid (see
                           Get-PSProvider for more details). As such, testing against a Registry
                           path or more esoteric data stores is valid (e.g. the Certificate store).
            - Static: Use the availability state provided in the <Availability> element.
        -->
        <Method></Method>
 
        <!--
            Automatic Method
 
            Selects either wildcard (default) or regular expression matching.
        -->
        <MatchRegEx>false</MatchRegEx>
 
        <!--
            Automatic Method
 
            Selects either case insensitive (default) or case sensitive matching.
        -->
        <MatchCase>false</MatchCase>
 
        <!--
            Automatic Method
 
            The pattern used for matching against the list of retrieved programs. If undefined or
            blank we'll match against any program name where the component name is a substring.
        -->
        <MatchPattern></MatchPattern>
 
        <!--
            FindInPath Method
 
            Name of the binary to search for in the system's PATH with optional file extension.
        -->
        <FindInPath></FindInPath>
 
        <!--
            PathExists Method
 
            Absolute path to test the existence of (can be for any valid PowerShell provider).
        -->
        <PathExists></PathExists>
 
        <!--
            Static Method
 
            Availability state to always return for this component per the below options.
 
            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://docs.microsoft.com/en-us/dotnet/api/system.environment.specialfolder
        -->
        <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
 
        If <BasePath> is set these paths are relative to the specified base path.
    -->
    <IgnorePaths>
        <!-- Each relative path to ignore should be placed in a <IgnorePath> element -->
        <IgnorePath></IgnorePath>
    </IgnorePaths>
 
    <!--
        Optional configuration of relative source paths which should have additional symlinks
        created under a different path than a straight mapping of the relative source path.
 
        Currently only file paths are supported. Directory paths will not be processed.
 
        If <BasePath> is set these paths are relative to the specified base path.
 
        If a matching <IgnorePaths> element is present it will take precedence.
    -->
    <AdditionalPaths>
        <AdditionalPath source="">
            <TargetPath symlink="" />
        </AdditionalPath>
    </AdditionalPaths>
 
    <!--
        Optional configuration of relative source paths which should have their target symlink
        created under a different path than a straight mapping of the relative source path.
 
        Currently only file paths are supported. Directory paths will not be processed.
 
        If <BasePath> is set these paths are relative to the specified base path.
 
        If a matching <IgnorePaths> element is present it will take precedence.
    -->
    <RenamePaths>
        <RenamePath source="" symlink="" />
    </RenamePaths>
</Component>