Feature manifest file contents

Feature manifest (FM) files are used to define specific types of image builds that contain different sets of optional packages. This topic describes the required and optional elements in a FM file. For more information about how FM files are used while generating images, see Building a phone image using ImgGen.cmd.

Note  

Most of the elements in a FM file include a path to a package. If the package is under the root directory for Microsoft packages (%WPDKCONTENTROOT%\MSPackages), this path can use the $(mspackageroot) macro in the path name. If the package is in some other location, you can use an environment variable, such as %oempackageroot%, and set this environment variable in the command-line window.

 

Example FM file

The following example shows a sample OEM FM file.

<?xml version="1.0" encoding="utf-8"?>
<FeatureManifest xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" 
  xmlns:xsd="https://www.w3.org/2001/XMLSchema" 
  xmlns="https://schemas.microsoft.com/embedded/2004/10/ImageUpdate">
  <BasePackages>
    <PackageFile Path="%oempackageroot%\common\" 
      Name="Contoso.Phone.Test.BaseOs.EnvPath.spkg" />
  </BasePackages>
  <Features>
    <OEM>
     <PackageFile Path="%oempackageroot%\test\" 
      Name="Contoso.Test.MinTE.spkg">
        <FeatureIDs>
          <FeatureID>TEST_FEATURE1</FeatureID>
        </FeatureIDs>
      </PackageFile>
   </OEM>
</Features>
  <ReleasePackages> 
    <PackageFile FeatureIdentifierPackage="true" Name="Contoso.BaseOS.BootApplications_Test.spkg" 
Path="%oempackageroot%\test" ReleaseType="Test"/> 
  </ReleasePackages> 
  <PrereleasePackages>
    <PackageFile ID="Contoso.MainOS.Protected_Replacement_Production" FeatureIdentifierPackage="true" 
Name="Contoso.MainOS.Protected_Replacement_Production.spkg" Path="%oempackageroot%\Merged\" Resolution="*" Type="replacement" Language="*"/>
  </PrereleasePackages>
<OEMDevicePlatformPackages>
    <PackageFile Name="SoCVendor.DCD6000.OEMDevicePlatform.spkg" Path="%oempackageroot%\DCD6000\" Device="DCD6000"/>  
</OEMDevicePlatformPackages>
</FeatureManifest>

You may wish to examine MSOptionalFeaturesFM.xml that is included with the mobileOS packagesunder %WPDKCONTENTROOT%\FMFiles to see additional FM XML files.

Elements in a FM file

The following sections describe the supported elements in a FM file.

FeatureManifest

The FeatureManifest element is the root XML element in the FM file. This element is the base container element for all other elements in the file. It must occur only once.

BasePackages

The BasePackages element specifies packages that are always included in the image if the FM file is referenced in the AdditionalFMs element of the OEMInput XML file. The BasePackages element has no supported attributes.

The following table describes the child elements of the BasePackages element.

Element Description

PackageFile

Optional. This element describes a package that will be included in the image. This element supports the following attributes:

  • Path – Required. The path to the package.

  • Name – Required. The file name of the package.

  • Resolution – Optional. A string that contains the display resolutions supported by the package. This attribute can be specified with the following values:

    • "*": The "*" character means that the package supports every resolution.

    • "(720x1280;768x1280)": This syntax indicates the set of resolutions that the package supports. The package is included only in images that are built for one of the resolutions in this list.

    • "!(720x1280;768x1280)": A '!' in front of the resolution list specifies that the package supports all resolutions except for those in the list. The package is included only in images that are not built for one of the resolutions in this list.

  • Language – Optional. A string that contains the display language codes supported by the package. This attribute can be specified with the following values:

    • "*": The "*" character means that the package supports every language.

    • "(en-US;zh-CN)": This syntax indicates the set of languages that the package supports. The package is included only in images that contain one of the display languages in this list.

    • "!(en-US;zh-CN)": A '!' in front of the language list specifies that the package supports all languages except or those in the list. The package is included only in images that do not contain one of the display languages in this list.

  • Partition – Optional. A string that specifies the target partition for the package. By default, packages are installed to the MainOS partition unless another is explicitly specified.

These elements are for Microsoft internal use only.

  • ID – Optional. String value. The ID is the package name. This attribute should not be used by OEMs.

  • NoBasePackage – Optional. Boolean value. Set to true for Language and\or Resolution packages that do not contain base packages. This attribute should not be used by OEMs.

  • FeatureIdentifierPackage – Optional. Boolean value. This attribute should not be used by OEMs.

 

Features

There are both Microsoft and OEM elements, each of which can contain Features. The OEM should only add their features to the <OEM> element. This provides multiple benefits, including the easier integration of newer versions of the OEMInput.xml files into the OEM’s build system.

The Features element defines one or more optional features that can be referenced in the Features element in the OEMInput file to include optional packages in the image. The Features element has no supported attributes.

The following table describes the child elements of the Features element.

Element Description

PackageFile

Optional. This element describes a package that will be included in the image if the OEMInput file references this feature.

This element supports the following attributes:

  • Path – Required. The path to the package.

  • Name – Required. The file name of the package.

  • Resolution – Optional. A string that contains the display resolutions supported by the package. This attribute can be specified with the following values:

    • "*": The "*" character means that the package supports every resolution.

    • "(720x1280;768x1280)": This syntax indicates the set of resolutions that the package supports. The package is included only in images that are built for one of the resolutions in this list.

    • "!(720x1280;768x1280)": A '!' in front of the resolution list specifies that that package supports all resolutions except for those in the list. The package is included only in images that are not built for one of the resolutions in this list.

  • Language – Optional. A string that contains the display language codes supported by the package. This attribute can be specified with the following values:

    • "*": The "*" character means that the package supports every language.

    • "(en-US;zh-CN)": This syntax indicates the set of languages that the package supports. The package is included only in images that contain one of the display languages in this list.

    • "!(en-US;zh-CN)": A '!' in front of the language list specifies that that package supports all languages except for those in the list. The package is included only in images that do not contain one of the display languages in this list.

  • Partition – Optional. A string that specifies the target partition for the package. By default, packages are installed to the MainOS partition unless another is explicitly specified.

This element supports the following child elements:

  • FeatureIDs – Required. Contains one or more FeatureID elements. Each FeatureID element contains a string value that specifies the name of a feature that will be associated with the package specified by the parent PackageFile element.

These elements are for Microsoft internal use only.

  • CPUType – Required. String value. Sets the CPU type. Can be set to either x86 or arm. This attribute should not be used by OEMs.

  • ID – Optional. String value. The ID is the package name. This attribute should not be used by OEMs.

  • NoBasePackage – Optional. Boolean value. Set to true for Language and\or Resolution packages that do not contain base packages. This attribute should not be used by OEMs.

  • FeatureIdentifierPackage – Optional. Boolean value. This attribute should not be used by OEMs.

 

Feature groupings and constraints

Feature groupings and constraints can be used to manage features. For more information, see Feature groupings and constraints .

ReleasePackages

The ReleasePackages element specifies packages that are included in images of a specific release type, as specified by the ReleaseType element in the OEMInput file. The ReleasePackages element have no supported attributes.

The following table describes the child elements of the ReleasePackages element.

Element Description

PackageFile

Optional. This element describes a package.

This element supports the following attributes:

  • ReleaseType – Required. The type of release supported by the package, either Production or Test. The package will only be included in images of the specified release type.

  • Path – Required. The path to the package.

  • Name – Required. The file name of the package.

  • Resolution – Optional. A string that contains the display resolutions supported by the package. This attribute can be specified with the following values:

    • "*": The "*" character means that the package supports every resolution.

    • "(720x1280;768x1280)": This syntax indicates the set of resolutions that the package supports. The package is included only in images that are built for one of the resolutions in this list.

    • "!(720x1280;768x1280)": A '!' in front of the resolution list specifies that the package supports all resolutions except for those in the list. The package is included only in images that are not built for one of the resolutions in this list.

  • Language – Optional. A string that contains the display language codes supported by the package. This attribute can be specified with the following values:

    • "*": The "*" character means that the package supports every language.

    • "(en-US;zh-CN)": This syntax indicates the set of languages that the package supports. The package is included only in images that contain one of the display languages in this list.

    • "!(en-US;zh-CN)": A '!' in front of the language list specifies that the package supports all languages except for those in the list. The package is included only in images that do not contain one of the display languages in this list.

  • Partition – Optional. A string that specifies the target partition for the package. By default, packages are installed to the MainOS partition unless another is explicitly specified.

These elements are for Microsoft internal use only.

  • ID – Optional. String value. The ID is the package name. This attribute should not be used by OEMs.

  • NoBasePackage – Optional. Boolean value. Set to true for Language and\or Resolution packages that do not contain base packages. This attribute should not be used by OEMs.

  • FeatureIdentifierPackage – Optional. Boolean value. This attribute should not be used by OEMs.

 

PrereleasePackages

Describes packages that can be excluded using the ExcludePrereleaseFeatures element in the OEMInput file. For more information, see OEMInput file contents.

Element Description

PackageFile

Optional. This element describes a prelease package.

This element supports the following attributes:

  • Type – Required. Can be either protected or replacement.

    The protected packages are excluded when ExcludePrereleaseFeatures is set to Yes and the replacement packages will instead be included. For example a replacement feature can be created by the OEM to enable scenarios such as mobile operator testing, while not distributing builds with sensitive functionality. This approach is one of many, and is not required, but is one option to consider, to help manage feature disclosure. For more information see OEMInput file contents.

    Important  

    No replacement packages should be included in a retail image.

     
  • Path – Required. The path to the package.

  • Name – Required. The file name of the package.

  • Resolution – Optional. A string that contains the display resolutions supported by the package. This attribute can be specified with the following values:

    • "*": The "*" character means that the package supports every resolution.

    • "(720x1280;768x1280)": This syntax indicates the set of resolutions that the package supports. The package is included only in images that are built for one of the resolutions in this list.

    • "!(720x1280;768x1280)": A '!' in front of the resolution list specifies that the package supports all resolutions except for those in the list. The package is included only in images that are not built for one of the resolutions in this list.

  • Language – Optional. A string that contains the display language codes supported by the package. This attribute can be specified with the following values:

    • "*": The "*" character means that the package supports every language.

    • "(en-US;zh-CN)": This syntax indicates the set of languages that the package supports. The package is included only in images that contain one of the display languages in this list.

    • "!(en-US;zh-CN)": A '!' in front of the language list specifies that the package supports all languages except for those in the list. The package is included only in images that do not contain one of the display languages in this list.

  • Partition – Optional. A string that specifies the target partition for the package. By default, packages are installed to the MainOS partition unless another is explicitly specified.

These elements are for Microsoft internal use only.

  • ID – Optional. String value. The ID is the package name. This attribute should not be used by OEMs.

  • NoBasePackage – Optional. Boolean value. Set to true for Language and\or Resolution packages that do not contain base packages. This attribute should not be used by OEMs.

  • FeatureIdentifierPackage – Optional. Boolean value. This attribute should not be used by OEMs.

 

SOCPackages

The SOCPackages element specifies packages that are included in images that are generated for a specific SoC, as specified by the SOC element in the OEMInput file. The SOCPackages element has no supported attributes.

The following table describes the child elements of the SOCPackages element.

Element Description

PackageFile

Optional. This element describes a package.

This element supports the following attributes:

  • SOC – Required. The type of SoC supported by the package. For a list of the supported values, see the description of the SOC element in OEMInput file contents. The package will only be included in images generated for the specified SoC.

  • Path – Required. The path to the package.

  • Name – Required. The file name of the package.

  • Resolution – Optional. A string that contains the display resolutions supported by the package. This attribute can be specified with the following values:

    • "*": The "*" character means that the package supports every resolution.

    • "(720x1280;768x1280)": This syntax indicates the set of resolutions that the package supports. The package is included only in images that are built for one of the resolutions in this list.

    • "!(720x1280;768x1280)": A '!' in front of the resolution list specifies that the package supports all resolutions except for those in the list. The package is included only in images that are not built for one of the resolutions in this list.

  • Language – Optional. A string that contains the display language codes supported by the package. This attribute can be specified with the following values:

    • "*": The "*" character means that the package supports every language.

    • "(en-US;zh-CN)": This syntax indicates the set of languages that the package supports. The package is included only in images that contain one of the display languages in this list.

    • "!(en-US;zh-CN)": A '!' in front of the language list specifies that the package supports all languages except for those in the list. The package is included only in images that do not contain one of the display languages in this list.

  • Partition – Optional. A string that specifies the target partition for the package. By default, packages are installed to the MainOS partition unless another is explicitly specified.

These elements are for Microsoft internal use only.

  • CPUType– Required. String value. Sets the CPU type. Can be set to either x86 or arm. This attribute should not be used by OEMs. This attribute should not be used by OEMs.

  • ID – Optional. String value. The ID is the package name. This attribute should not be used by OEMs.

  • NoBasePackage – Optional. Boolean value. Set to true for Language and\or Resolution packages that do not contain base packages. This attribute should not be used by OEMs.

  • FeatureIdentifierPackage – Optional. Boolean value. This attribute should not be used by OEMs.

 

SVPackages

The SVPackages element specifies packages that are included in images that are generated for a specific SoC manufacturer, as specified by the SV element in the OEMInput file. The SVPackages element has no supported attributes.

The following table describes the child elements of the SVPackages element.

Element Description

PackageFile

Optional. This element describes a package.

This element supports the following attributes:

  • SV – Required. The vendor for the SoC that is supported by the package. The package will only be included in images generated for the specified SoC vendor.

  • Path – Required. The path to the package.

  • Name – Optional.

  • Resolution – Optional. A string that contains the display resolutions supported by the package. This attribute can be specified with the following values:

    • "*": The "*" character means that the package supports every resolution.

    • "(720x1280;768x1280)": This syntax indicates the set of resolutions that the package supports. The package is included only in images that are built for one of the resolutions in this list.

    • "!(720x1280;768x1280)": A '!' in front of the resolution list specifies that the package supports all resolutions except for those in the list. The package is included only in images that are not built for one of the resolutions in this list.

  • Language – Optional. A string that contains the display language codes supported by the package. This attribute can be specified with the following values:

    • "*": The "*" character means that the package supports every language.

    • "(en-US;zh-CN)": This syntax indicates the set of languages that the package supports. The package is included only in images that contain one of the display languages in this list.

    • "!(en-US;zh-CN)": A '!' in front of the language list specifies that the package supports all languages except for those in the list. The package is included only in images that do not contain one of the display languages in this list.

  • Partition – Optional. A string that specifies the target partition for the package. By default, packages are installed to the MainOS partition unless another is explicitly specified.

These elements are for Microsoft internal use only.

  • CPUType– Required. String value. Sets the CPU type. Can be set to either x86 or arm. This attribute should not be used by OEMs. This attribute should not be used by OEMs.

  • ID – Optional. String value. The ID is the package name. This attribute should not be used by OEMs.

  • NoBasePackage – Optional. Boolean value. Set to true for Language and\or Resolution packages that do not contain base packages. This attribute should not be used by OEMs.

  • FeatureIdentifierPackage – Optional. Boolean value. This attribute should not be used by OEMs.

 

OEMDevicePlatformPackages

The OEMDevicePlatformPackages element specifies the device platform package to include in an image for a specific device type. OEMs must specify the device platform package by using this element in a FM file. For more information about device platform packages, see Set device platform information. The OEMDevicePlatformPackages element has no supported attributes.

The following table describes the child elements of the OEMDevicePlatformPackages element.

Element Description

PackageFile

Optional. This element describes a device platform package to include in the image for a specific device type.

This element supports the following attributes:

  • Device – Required. The device type that is supported by the device platform package. The package will only be included in images generated for the specified device type.

  • Path – Required. The path to the package.

  • Name – Required. The file name of the package.

These elements are for Microsoft internal use only.

  • CPUType– Required. String value. Sets the CPU type. Can be set to either x86 or arm. This attribute should not be used by OEMs.

  • ID – Optional. String value. The ID is the package name. This attribute should not be used by OEMs.

  • NoBasePackage – Optional. Boolean value. Set to true for Language and\or Resolution packages that do not contain base packages. This attribute should not be used by OEMs.

  • FeatureIdentifierPackage – Optional. Boolean value. This attribute should not be used by OEMs.

 

DeviceSpecificPackages

The DeviceSpecificPackages element specifies packages to include in images that are generated for a specific device type, as specified by the Device element in the OEMInput file. The DeviceSpecificPackages element has no supported attributes.

The following table describes the child elements of the DeviceSpecificPackages element.

Element Description

PackageFile

Optional. This element describes a package to include in the image for a specific device type.

This element supports the following attributes:

  • Device – Required. The device type that is supported by the device platform package. The package will only be included in images generated for the specified device type.

  • Path – Required. The path to the package.

  • Name – Required. The file name of the package.

  • Resolution – Optional. A string that contains the display resolutions supported by the package. This attribute can be specified with the following values:

    • "*": The "*" character means that the package supports every resolution.

    • "(720x1280;768x1280)": This syntax indicates the set of resolutions that the package supports. The package is included only in images that are built for one of the resolutions in this list.

    • "!(720x1280;768x1280)": A '!' in front of the resolution list specifies that the package supports all resolutions except for those in the list. The package is included only in images that are not built for one of the resolutions in this list.

  • Language – Optional. A string that contains the display language codes supported by the package. This attribute can be specified with the following values:

    • "*": The "*" character means that the package supports every language.

    • "(en-US;zh-CN)": This syntax indicates the set of languages that the package supports. The package is included only in images that contain one of the display languages in this list.

    • "!(en-US;zh-CN)": A '!' in front of the language list specifies that the package supports all languages except for those in the list. The package is included only in images that do not contain one of the display languages in this list.

  • Partition – Optional. A string that specifies the target partition for the package. By default, packages are installed to the MainOS partition unless another is explicitly specified.

These elements are for Microsoft internal use only.

  • CPUType– Required. String value. Sets the CPU type. Can be set to either x86 or arm. This attribute should not be used by OEMs.

  • ID – Optional. String value. The ID is the package name This attribute should not be used by OEMs.

  • NoBasePackage – Optional. Boolean value. Set to true for Language and\or Resolution packages that do not contain base packages. This attribute should not be used by OEMs.

  • FeatureIdentifierPackage – Optional. Boolean value. This attribute should not be used by OEMs.

 

Microsoft internal use only

The following components are reserved for Microsoft internal use only, but are documented here for completeness.

CPUPackages

Reserved for internal Microsoft use. This element should not be used by OEMs.

Element Description

PackageFile

Optional. This element describes a package.

This element supports the following attributes:

  • CPUType – Required. String value. Sets the CPU type. Can be set to either x86 or arm. This attribute should not be used by OEMs.

  • Path – Required. The path to the package.

  • Name – Required. The file name of the package.

  • ID– Optional. String value. The ID is the package name. This attribute should not be used by OEMs.

  • NoBasePackage – Optional. Boolean value. Set to true for Language and\or Resolution packages that do not contain base packages. This attribute should not be used by OEMs.

  • FeatureIdentifierPackage – Optional. Boolean value. This attribute should not be used by OEMs.

  • Resolution – Optional. A string that contains the display resolutions supported by the package. This attribute can be specified with the following values:

    • "*": The "*" character means that the package supports every resolution.

    • "(720x1280;768x1280)": This syntax indicates the set of resolutions that the package supports. The package is included only in images that are built for one of the resolutions in this list.

    • "!(720x1280;768x1280)": A '!' in front of the resolution list specifies that the package supports all resolutions except for those in the list. The package is included only in images that are not built for one of the resolutions in this list.

  • Language – Optional. A string that contains the display language codes supported by the package. This attribute can be specified with the following values:

    • "*": The "*" character means that the package supports every language.

    • "(en-US;zh-CN)": This syntax indicates the set of languages that the package supports. The package is included only in images that contain one of the display languages in this list.

    • "!(en-US;zh-CN)": A '!' in front of the language list specifies that that package supports all languages except for those in the list. The package is included only in images that do not contain one of the display languages in this list.

  • Partition – Optional. A string that specifies the target partition for the package.

 

BootUILanguagePackageFile

Reserved for internal Microsoft use. This element should not be used by OEMs.

Element Description

BootUILanguagePackageFile

Optional. This element supports the following attributes:

  • Path – Required. The path to the package.

  • Name – Required. The file name of the package.

  • ID – Optional. String value. The ID is the package name. This attribute should not be used by OEMs.

  • NoBasePackage – Optional. Boolean value. Set to true for Language and\or Resolution packages that do not contain base packages. This attribute should not be used by OEMs.

  • FeatureIdentifierPackage – Optional. Boolean value. This attribute should not be used by OEMs.

  • Partition – Optional. A string that specifies the target partition for the package.

 

BootLocalePackageFile

Reserved for internal Microsoft use. This element should not be used by OEMs.

Element Description

BootLocalePackageFile

Optional. This element supports the following attributes:

  • Path – Required. The path to the package.

  • Name – Required. The file name of the package.

  • ID – Optional. String value. The ID is the package name. This attribute should not be used by OEMs.

  • NoBasePackage – Optional. Boolean value. Set to true for Language and\or Resolution packages that do not contain base packages. This attribute should not be used by OEMs.

  • FeatureIdentifierPackage – Optional. Boolean value. This attribute should not be used by OEMs.

  • Partition – Optional. A string that specifies the target partition for the package.

 

DeviceLayoutPackages

Reserved for internal Microsoft use. This element should not be used by OEMs.

Element Description

PackageFile

Optional. This element describes a package.

This element supports the following attributes:

  • SOC – Required.

  • Path – Required. The path to the package.

  • Name – Required. The file name of the package.

  • Partition – Optional. A string that specifies the target partition for the package. By default, packages are installed to the MainOS partition unless another is explicitly specified.

  • ID– Optional. String value. The ID is the package name. This attribute should not be used by OEMs.

  • NoBasePackage – Optional. Boolean value. Set to true for Language and\or Resolution packages that do not contain base packages. This attribute should not be used by OEMs.

  • FeatureIdentifierPackage – Optional. Boolean value. This attribute should not be used by OEMs.

  • CPUType– Required. String value. Sets the CPU type. Can be set to either x86 or arm. This attribute should not be used by OEMs. This attribute should not be used by OEMs.

  • Partition – Optional. A string that specifies the target partition for the package.

 

KeyboardPackages

Reserved for internal Microsoft use. This element should not be used by OEMs.

Element Description

PackageFile

Optional. This element describes a package.

This element supports the following attributes:

  • Path – Required. The path to the package.

  • Name – Required. The file name of the package.

  • ID– Optional. String value. The ID is the package name. This attribute should not be used by OEMs.

  • NoBasePackage – Optional. Boolean value. Set to true for Language and\or Resolution packages that do not contain base packages. This attribute should not be used by OEMs.

  • FeatureIdentifierPackage – Optional. Boolean value. This attribute should not be used by OEMs.

  • Language – Optional. A string that contains the display language codes supported by the package. This attribute can be specified with the following values:

    • "*": The "*" character means that the package supports every language.

    • "(en-US;zh-CN)": This syntax indicates the set of languages that the package supports. The package is included only in images that contain one of the display languages in this list.

    • "!(en-US;zh-CN)": A '!' in front of the language list specifies that the package supports all languages except for those in the list. The package is included only in images that do not contain one of the display languages in this list.

  • Partition – Optional. A string that specifies the target partition for the package. By default, packages are installed to the MainOS partition unless another is explicitly specified.

 

SpeechPackages

Reserved for internal Microsoft use. This element should not be used by OEMs.

Element Description

PackageFile

Optional. This element describes a package.

This element supports the following attributes:

  • Path – Required. The path to the package.

  • Name – Required. The file name of the package.

  • ID– Optional. String value. The ID is the package name. This attribute should not be used by OEMs.

  • NoBasePackage – Optional. Boolean value. Set to true for Language and\or Resolution packages that do not contain base packages. This attribute should not be used by OEMs.

  • FeatureIdentifierPackage – Optional. Boolean value. This attribute should not be used by OEMs.

  • Language – Optional. A string that contains the display language codes supported by the package. This attribute can be specified with the following values:

    • "*": The "*" character means that the package supports every language.

    • "(en-US;zh-CN)": This syntax indicates the set of languages that the package supports. The package is included only in images that contain one of the display languages in this list.

    • "!(en-US;zh-CN)": A '!' in front of the language list specifies that the package supports all languages except for those in the list. The package is included only in images that do not contain one of the display languages in this list.

  • Partition – Optional. A string that specifies the target partition for the package. By default, packages are installed to the MainOS partition unless another is explicitly specified.

 

Building a phone image using ImgGen.cmd

 

 

Send comments about this topic to Microsoft