MicrosoftGame.config additional reference

Summary

This topic describes additional details/reference material for the MicrosoftGame.config file. It includes the following sections.

Section Description
Element details Provides a list of MicrosoftGame.config element names, purpose and notes.
Sample MicrosoftGame.config file Provides an example MicorosftGame.config for Xbox & PC.
XSD Schema for MicrosoftGame.config Provides details on the XSD Schema used to validate the MicrosoftGame.config.
Previous Element reference Provides a list of elements of note that have changed, including references to changes from ERA.
MicrosoftGame.config and DLC creation Provides more information on creating a MicrosoftGame.config for a DLC product.
See also Provides links to additional documentation related to MicrosoftGame.config.

Game configVersion details

As of the March 2022 Microsoft Game Development Kit (GDK), the Game configVersion has been updated from 0 to 1 for new MicrosoftGame.config files generated using Microsoft Game Development Kit (GDK) tools. As of the October 2023 GDK, all titles must use configVersion="1". Submission Validator will report a FAILURE for any titles submitting using the October 2023 GDK with configVersion="0".

The changes between Game configVersion 0 and 1 are as follows:

  • MSAAppId and TitleId element are required if either is specified in the MicrosoftGame.config (i.e. if the TitleId is specified, the MSAAppId must also be specified).
  • MSAAppId and TitleId element are required if NoCodePCRoot element is specified or AdvancedUserModel element is set to the value of false.
  • ModFolder, EnableWritesToPackageRoot, DisableFilesystemWriteVirtualization and DisableRegistryWriteVirtualization elements have now been deprecated with configVersion 1.

Which requirements, defined in the schema, will be run against a title is defined by this value in the MicrosoftGame.config:

<Game configVersion="1">

The Game configVersion allows for values of 0 and 1. These new requirements will not impact existing titles upgrading to the March 2022 Microsoft Game Development Kit (GDK) as their Game configVersion will remain set to 0.

Element details

This section details the element name, if required, purpose, parent node and additional notes for definable elements within the MicrosoftGame.config.

Node Name Required Purpose Parent Notes
Game Required Singular Parent Node that contains all other content
Identity Required Defines the title's Name, Publisher and Version Game Title information can be found in Partner Center under Product Management -> Product Identity; see Setting up a game at Partner Center, for Managed Partners.
Used during registration to uniquely identify the title.
Name and Publisher are required fields.
Version will default to 1.0.0.0 if not specified.
Additional packages for subsequent console generations must increment package major version beyond existing package versions.
ShellVisuals Required for packaged build Defines the title's Shell presence. For example, Images and Names. Game Used during registration to surface the title in the Shell.
Resources Optional List of Language Locale pairs used to localize Shell Visuals. Game May be copied and pasted from an existing AppxManifest as the format is retained.
For more information, see Packaging.
Resource Optional An individual entry of a Language Locale in the Resources list. Resources
ExecutableList Required List of title executables. Game At least one entry is required to register or package the title successfully.
The "IsDevOnly" attribute allows you to ensure this entry will not be included in a submission signed package.
Overrides for Display Name and Logo allow unique values for this exe in the shell (The resources specified above in "ShellVisuals" node will be the default for each exe unless otherwise overridden here).
Executable Required Specifies the details of a specific executable. ExecutableList This section attributes include the name of the executable (Name), which device it's built for (TargetDeviceFamily), it's Application ID (Id), if it's a Development only executable (IsDevOnly), if the display name from the ShellVisuals node should be overridden (OverrideDisplayName), if the Logo from ShellVisuals node should be overridden (OverrideLogo), if the Square480x480Logo from ShellVisuals node should be overridden (OverrideSquare480x480Logo), if the Square44x44Logo from ShellVisuals node should be overridden (OverrideSquare44x44Logo), if the SplashScreenImage from ShellVisuals node should be overridden (OverrideSplashScreenImage), and if the executable has an alias (Alias (currently Desktop only).
AdvancedUserModel Optional Specifies if Advanced User Model should be used for your title. Game This means your title supports the active user changing without requiring a restart. If disabled, then the simple user model is used which guarantees your title will always keep the active user that it was launched with. See GDK User Models (NDA topic)Authorization required for more information.
Protocol Optional Custom protocol that can be used to launch the game or bring the game into the foreground if it were already running. ProtocolList Specifies both the name of the custom protocol as well as optionally the path to the executable. See Protocol Activation for more information.
ProtocolList Optional Specifies a collection of custom protcols that can be used to launch the game or bring the game into the foreground if it were already running. Game Must supply at least one Protocol. See Protocol Activation for more information.
GameOsVersion Optional (Console only) Specifies the version of the Microsoft Game Development Kit (GDK) gameOS that this title requires to run. Game Will use the currently running or default GameOS if not specified.
WindowsOsVersion Optional (PC only) Specifies the minimum and suggested versions of Windows(tm) that this title requires to run. Game Allowed values are a four part version number (i.e. 10.0.19045.3570) and options are RequiredMinimum="#.#.#.#", SuggestedMinimum="#.#.#.#" Recommended="#.#.#.#" This suggested minimum element will default to 10.0.19045.3570
MediaCapture Optional (Console only) Specifies the desired behavior for system Media Capture apps while this title is running. Game Media capture requires title identity to be configured to work properly.
GameDVRSystemComponent Optional (Console only) Specifies if the Game DVR system component is enabled or not. MediaCapture
BlockBroadcast Optional (Console only) Specifies if broadcasting the title should be blocked or allowed. MediaCapture
BlockGameDVR Optional (Console only) Specifies if Game DVR recordings of the title should be blocked or allowed. MediaCapture
StoreId Optional Specifies the store identity of this title. Game Specified in Partner Center under Product Management -> Product Identity.
AllowedProducts Optional Specifies the StoreId of the associated title or titles that this Downloadable Content Package (DLC) title belongs to. Game For more information, see Downloadable Content Packages (DLCs).
AllowedProduct Optional Specifies the StoreId of the associated title that this Downloadable Content Package (DLC) title belongs to. AllowedProducts
RelatedProducts Optional Specifies the StoreId of products to which this DLC title is related to. Game For more information, see Downloadable Content Packages (DLCs).
RelatedProduct Optional A specific entry of a StoreId of products to which this DLC title is related to. RelatedProducts
TargetDeviceFamilyForDLC Optional (DLC only) Specifies the target platform the DLC package is built for. Allowed values are XboxOne, Scarlett and PC Game
PersistentLocalStorage Optional (Console only) Specifies the desired size of the titles Persistent Local Storage. Game Persistent local storage requires title identity to be configured to work properly.
SizeMB Optional (Console only) Specifies the minimum size in MB of Persistent Local Storage. PersistentLocalStorage Persistent local storage requires title identity to be configured to work properly.
GrowableToMB Optional (Console only) Specifies the maximum size in MB the Persistent Local Storage can grow to over time. PersistentLocalStorage Persistent local storage requires title identity to be configured to work properly.
VirtualMachine Optional (Console only) Specifies the title memory allocation on specific Xbox One hardware. Game
XboxOneXTitleMemory Optional (Console only) Specifies the title memory setting for Xbox One X consoles. Virtual Machine Allowed values of "Standard" or "Advanced".
XboxLockhartTitleMemory Optional (Console only) Specifies the title memory setting for Xbox Series S consoles. Virtual Machine Allowed values of "Standard" or "Advanced".
XboxAnacondaTitleMemory Optional (Console only) Specifies the title memory setting for Xbox Series X consoles. Virtual Machine Allowed values of "Standard" or "Advanced".
SMTEnabled Optional (Console only) Specifies if SMT is enabled or not. Virtual Machine
RequiresEraShim Optional (Console only) Specifies if Xbox One ERA Shim is required or not. Virtual Machine
XboxCompatibility Optional (Console only) Specifies the maximum console generation that the game is compatible with. Virtual Machine Developers would use this with a Xbox One title that is running in backwards compatibility on Xbox Series X|S. The primary usage of this would be to get access to enhanced features such as extra memory. The allowed values are "XboxOne", which will behave like a normal backwards compatible title, and "Scarlett", which will allow the backwards compatible title to access enhanced features.
DlcCompatibility Optional (Console only) Specifies the minimum console generation for DLC the game is compatible with. Virtual Machine Developers would use this with a Xbox One title that is running on a Xbox Series X|S console but wishes to load DLC packages built for Xbox One. This would allow the DLC to exist on any storage, not just fast storage.
MSAFullTrust Optional (PC Desktop only) Specifies if the Title is declared as "MSA Full Trust". Game This should not be used unless otherwise noted by your Account Manager.
MSAAppId Required Specifies the Titles MSA App ID, which is used with Xbox Live Title ID (as follows) for identity with Xbox Live services. Game As of the March 2022 Microsoft Game Development Kit (GDK), the MSAAppId element is must be present if the TitleId element is specified.
TitleId Optional Specifies the Titles Xbox Live Title ID, used for identity with Xbox Live services. Game As of the March 2022 Microsoft Game Development Kit (GDK), the TitleId element is must be present if the MSAAppId element is specified.
RequiresXboxLive Optional Specifies if the title requires Xbox Live connectivity in order to run. Game
ExtendedAttributeList Optional Fallback for additional attributes outside of existing elements. Game This should not be used unless otherwise noted by your Account Manager.
ExtendedAttribute Optional A specific fallback designation in the Extended Attribute List. Game This should not be used unless otherwise noted by your Account Manager.
DesktopRegistration Optional (PC Desktop only) Specifies attributes to use when registering the title on the PC desktop platform. Game
ProcessorArchitecture Optional (PC Desktop only) Specifies the processor architecture that matches your game executables. DesktopRegistration Attribute examples for this element are x64 & x86.
MainPackageDependency Optional (PC Desktop DLC only) Specifies the identity of the base package to which your DLC belongs. DesktopRegistration
DependencyList Optional (PC Desktop only) Determines which framework packages need to be installed before installing the title package. DesktopRegistration For more information on child element usage, please click here.
KnownDependency Optional (PC Desktop only) Shortcut to specify one of the commonly used framework packages. DependencyList Attribute specification of name is required and MinVersion is set automatically. Refer to the ST_KnownDependency section in the following schema for a list of possible shortcuts.
Dependency Optional (PC Desktop only) Specific framework package and version that are required to be installed ahead of the title. DependencyList Attribute specification of name and MinVersion must be set.
CustomInstallActions Optional (PC Desktop only) Specifies a custom installer action with Administration privileges the first time your game runs. DesktopRegistration Any executable you specify must be located under the "Installers" folder in the base folder of your game. Don't include any other files in the Installers folder.
Folder Optional (PC Desktop only) Specifies the folder location of the Installers. CustomInstallActions
InstallActionList Optional (PC Desktop only) Specifies a list of install actions, including the executable file, name and arguments. CustomInstallActions
InstallAction Optional (PC Desktop only) Specifies an install action, within the Install Action List. InstallActionList Maximum of 100 entries.
RepairActionList Optional (PC Desktop only) Specifies a list of repair actions. CustomInstallActions
RepairAction Optional (PC Desktop only) Specifies a repair action, within the Repair Action List. RepairActionList Maximum of 100 entries.
UninstallActionList Optional (PC Desktop only) Specifies a list of uninstall actions. CustomInstallActions
UninstallAction Optional (PC Desktop only) Specifies an uninstall action, within the Uninstall Action List. UninstallActionList Maximum of 100 entries.
ModFolder Optional (PC Desktop only) Defines the location of end-user mods for your game files. DesktopRegistration This element is now deprecated as of the March 2022 Microsoft Game Development Kit (GDK).
DisableRegistryWriteVirtualization Optional (PC Desktop only) Set to true if your game must make operating system-wide registry writes. DesktopRegistration This element is now deprecated as of the March 2022 Microsoft Game Development Kit (GDK).
DisableFilesystemWriteVirtualization Optional (PC Desktop only) Set to true if your game must make operating system-wide file writes. DesktopRegistration This element is now deprecated as of the March 2022 Microsoft Game Development Kit (GDK).
EnableWritesToPackageRoot Optional (PC Desktop only) Set to true if your game needs to write to the package install location. DesktopRegistration This element is now deprecated as of the March 2022 Microsoft Game Development Kit (GDK).
MultiplayerProtocol Optional (PC Desktop only) Allows for protocol activation within the title via "ms-xbl-multiplayer" protocol. DesktopRegistration Primarily used to enable Game Bar to launch games / multiplayer game invites.
FileTypeAssociation Optional (PC Desktop only) Allows a file type to be associated with an executable in your package. DesktopRegistration An example would be a specific extension for a title's map editor.
DisplayName Optional (PC Desktop only) Specifies a display name for the File Type Association. FileTypeAssociation
Logo Optional (PC Desktop only) Specifies a logo for the File Type Association. FileTypeAssociation
InfoTip Optional (PC Desktop only) Specifies an Info Tip for the File Type Association. FileTypeAssociation
EditFlags Optional (PC Desktop only) Specifies Edit Flags for the File Type Association. FileTypeAssociation
SupportedFileTypes Optional (PC Desktop only) Specifies the supported file types for the File Type Association. FileTypeAssociation
FileType Optional (PC Desktop only) Specifies a file type extension to be used as part of the SupportedFileTypes element. SupportedFileTypes
NoCodePCRoot Optional (PC Desktop only) Specifies the local folder where Save Games are stored for use when no code cloud saves are enabled for the package. SaveGameStorage
DevelopmentOnly Optional (Console only) A list of development-only properties. Game
ContentIdOverride Optional (Console only) An override, for development-only, to a games ContentID. DevelopmentOnly Utilize the xbapp list /d /nosystem commmand, with a package installed, to get your titles ContentID.
EKBIDOverride Optional (Console only) An override, for development-only, to a games EKBID (trial version ID). DevelopmentOnly Utilize the xbapp list /d commmand, with a package installed, to get your titles EKBID.
DebugNetworkPortList Optional (Console only) A list of additional ports to open for development on a Development Kit. DevelopmentOnly
DebugNetworkPort Optional (Console only) Additional port to open for development on a dev kit. DebugNetworkPortList

Return to the top of this topic.

Sample MicrosoftGame.config file

The following MicrosoftGame.config is an example config showing how elements are used for Xbox Series X|S (with comments on differences for Xbox One). For an example of a MicrosoftGame.config for PC, see Getting Started with Packaging For PC.

<?xml version="1.0" encoding="utf-8"?>
<Game configVersion="1">
    
    <Identity Name="41336PublisherName.ExampleGame" Publisher="CN=A4954634-DF4B-47C7-AB70-D3215D246AF1" Version="1.6.0.0"/>
    
    <GameOsVersion>**REPLACE**</GameOsVersion>
    
    <MediaCapture>
        <GameDVRSystemComponent>true</GameDVRSystemComponent>
        <BlockBroadcast>0</BlockBroadcast>
        <BlockGameDVR>0</BlockGameDVR>
    </MediaCapture>
    
    <PersistentLocalStorage>
        <SizeMB>322</SizeMB>
    </PersistentLocalStorage>
    
    <MSAAppId>0000000000000000</MSAAppId>

    <TitleId>FFFFFFFF</TitleId>

    <StoreId>9NZTKMP36L8J</StoreId>
    
    <RelatedProducts>
        <RelatedProduct>9NZTKMP36L8J</RelatedProduct>
        <RelatedProduct>9NQJV5BMKR6C</RelatedProduct>
        <RelatedProduct>9PNX38847DWW</RelatedProduct>
    </RelatedProducts>
    
    <VirtualMachine>
        <XboxLockhartTitleMemory>Standard</XboxLockhartTitleMemory>
        <XboxAnacondaTitleMemory>Standard</XboxAnacondaTitleMemory>
        <!-- <XboxOneXTitleMemory>Standard</XboxOneXTitleMemory> if MicrosoftGame.config is for Xbox One instead of Xbox Series X&#124;S. -->
    </VirtualMachine>
    
    <MSAFullTrust>false</MSAFullTrust>
    
    <ExecutableList>
         <!-- TargetDeviceFamily="XboxOne" if the MicrosoftGame.config is for Xbox One instead of Xbox Series X&#124;S. -->
        <Executable Name="ExampleGame.exe"
            TargetDeviceFamily="Scarlett"
            Id="Game"
            IsDevOnly="false"
            OverrideDisplayName="Example Game"
            OverrideLogo="OverriddenLogo.png" />
        <Executable Name="ExampleGame_Debug.exe"
            IsDevOnly="true"/>
        <Executable Name="ExampleGame_Profile.exe"
            IsDevOnly="true" />
    </ExecutableList>
    
    <ShellVisuals DefaultDisplayName="Example Game"
        PublisherDisplayName="Example Publisher"
        StoreLogo="StoreLogoFile.png"
        Square150x150Logo="LogoFile150x150.png"
        Square44x44Logo="LogoFile44x44.png"
        Square480x480Logo="LogoFile480x480.png"
        Description="Example Game"
        ForegroundText="light"
        BackgroundColor="#ffffff"
        SplashScreenImage="SplashScreen.png"/>
    
    <Resources>
        <Resource Language="en-us"/>
        <Resource Language="de-de"/>
        <Resource Language="es-mx"/>
    </Resources>

    <DevelopmentOnly>
      <DebugNetworkPortList>
        <DebugNetworkPort>4600</DebugNetworkPort>
      </DebugNetworkPortList>
    </DevelopmentOnly>
</Game>

Return to the top of this topic.

XSD Schema for MicrosoftGame.config

The latest schema for the MicrosoftGame.config file is in the <install root>/bin folder of the Microsoft Game Development Kit (GDK) installation as GameConfigSchema.xsd.

See the following example of the GameConfigSchema.xsd:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <!-- Types -->

    <xs:simpleType name="ST_NonEmptyString">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="32767"/>
            <xs:pattern value="[^\s]|([^\s].*[^\s])"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_GUID">
        <xs:restriction base="ST_NonEmptyString">
            <xs:pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_VersionQuad">
        <xs:restriction base="ST_NonEmptyString">
            <xs:pattern value="(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])(\.(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])){3}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_Hex8">
        <xs:restriction base="ST_NonEmptyString">
            <xs:pattern value="[0-9a-fA-F]{8}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_Hex16">
        <xs:restriction base="ST_NonEmptyString">
            <xs:pattern value="[0-9a-fA-F]{16}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_PLSSize">
        <xs:restriction base="xs:integer">
            <!-- The actual max is determined by policy -->
            <xs:maxInclusive value="100000"/>
            <xs:minInclusive value="10"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_GrowablePLSSize">
        <xs:restriction base="xs:integer">
            <xs:minInclusive value="10"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="CT_PersistentLocalStorage">
        <xs:all>
            <xs:element name="SizeMB" type="ST_PLSSize" minOccurs="0" maxOccurs="1"/>
            <xs:element name="GrowableToMB" type="ST_GrowablePLSSize" minOccurs="0" maxOccurs="1"/>
        </xs:all>
    </xs:complexType>

    <xs:simpleType name="ST_FileNameCharSet">
        <xs:restriction base="ST_NonEmptyString">
            <xs:pattern value="[^&lt;&gt;&quot;:%\|\?\*\x01-\x1f]+"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_FileName">
        <xs:restriction base="ST_FileNameCharSet">
            <xs:pattern value="([^/\\]*[^./\\]+)(\\[^/\\]*[^./\\]+)*"/>
            <xs:pattern value="([^/\\]*[^./\\]+)(/[^/\\]*[^./\\]+)*"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_FileNameNoPath">
        <xs:restriction base="ST_FileName">
            <xs:pattern value="[^\\/]+"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_AsciiWindowsId">
        <xs:restriction base="ST_NonEmptyString">
            <xs:pattern value="([A-Za-z][A-Za-z0-9]*)(\.[A-Za-z][A-Za-z0-9]*)*"/>
            <xs:maxLength value="255"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_DeviceFamily">
        <xs:restriction base="xs:string">
            <xs:enumeration value="XboxOne"/>
            <xs:enumeration value="Scarlett"/>
            <xs:enumeration value="PC"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_ApplicationId">
        <xs:restriction base="ST_AsciiWindowsId">
            <xs:maxLength value="64"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_StoreId">
        <xs:restriction base="xs:string">
            <xs:minLength value="12"/>
            <xs:maxLength value="12"/>
            <xs:pattern value="[0-9bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ]{12}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_Executable">
        <xs:restriction base="ST_FileName">
            <xs:pattern value=".+\.([Ee][Xx][Ee])"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_ExecutableNoPath">
        <xs:restriction base="ST_FileName">
            <xs:pattern value="[^\\]+\.([Ee][Xx][Ee])"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_ImageFile">
        <xs:restriction base="ST_FileName">
            <xs:pattern value=".+\.(png)"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_ResourceReference">
        <xs:restriction base="ST_NonEmptyString">
            <xs:pattern value="\bms-resource:.{1,256}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_DisplayName">
        <xs:union memberTypes="ST_ResourceReference">
            <xs:simpleType>
                <xs:restriction base="ST_NonEmptyString">
                    <xs:maxLength value="256"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:union>
    </xs:simpleType>

    <xs:simpleType name="ST_Description">
        <xs:restriction base="ST_NonEmptyString">
            <xs:pattern value="[^\x01-\x1f]+"/>
            <xs:maxLength value="2048"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_ForegroundText">
        <xs:restriction base="xs:string">
            <xs:enumeration value="light"/>
            <xs:enumeration value="dark"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_Color">
        <xs:restriction base="xs:string">
            <xs:pattern value="#[\da-fA-F]{6}"/>
            <xs:pattern value="aliceBlue|antiqueWhite|aqua|aquamarine|azure|beige|bisque|black|blanchedAlmond|blue|blueViolet|brown|burlyWood"/>
            <xs:pattern value="cadetBlue|chartreuse|chocolate|coral|cornflowerBlue|cornsilk|crimson|cyan|darkBlue|darkCyan|darkGoldenrod|darkGray"/>
            <xs:pattern value="darkGreen|darkKhaki|darkMagenta|darkOliveGreen|darkOrange|darkOrchid|darkRed|darkSalmon|darkSeaGreen|darkSlateBlue"/>
            <xs:pattern value="darkSlateGray|darkTurquoise|darkViolet|deepPink|deepSkyBlue|dimGray|dodgerBlue|firebrick|floralWhite|forestGreen"/>
            <xs:pattern value="fuchsia|gainsboro|ghostWhite|gold|goldenrod|gray|green|greenYellow|honeydew|hotPink|indianRed|indigo|ivory"/>
            <xs:pattern value="khaki|lavender|lavenderBlush|lawnGreen|lemonChiffon|lightBlue|lightCoral|lightCyan|lightGoldenrodYellow|lightGreen"/>
            <xs:pattern value="lightGray|lightPink|lightSalmon|lightSeaGreen|lightSkyBlue|lightSlateGray|lightSteelBlue|lightYellow|lime|limeGreen"/>
            <xs:pattern value="linen|magenta|maroon|mediumAquamarine|mediumBlue|mediumOrchid|mediumPurple|mediumSeaGreen|mediumSlateBlue|mediumSpringGreen"/>
            <xs:pattern value="mediumTurquoise|mediumVioletRed|midnightBlue|mintCream|mistyRose|moccasin|navajoWhite|navy|oldLace|olive|oliveDrab"/>
            <xs:pattern value="orange|orangeRed|orchid|paleGoldenrod|paleGreen|paleTurquoise|paleVioletRed|papayaWhip|peachPuff|peru|pink|plum"/>
            <xs:pattern value="powderBlue|purple|red|rosyBrown|royalBlue|saddleBrown|salmon|sandyBrown|seaGreen|seaShell|sienna|silver|skyBlue"/>
            <xs:pattern value="slateBlue|slateGray|snow|springGreen|steelBlue|tan|teal|thistle|tomato|transparent|turquoise|violet|wheat|white"/>
            <xs:pattern value="whiteSmoke|yellow|yellowGreen"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="CT_Resources">
        <xs:sequence>
            <xs:element name="Resource" maxOccurs="200" minOccurs="0" >
                <xs:complexType>
                    <xs:attribute name="Language" type="xs:language" use="required"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

     <xs:complexType name="CT_Identity">
        <xs:attribute name="Name" type="ST_PackageName" use="required"/>
        <xs:attribute name="Publisher" type="ST_Publisher" use="required"/>
        <xs:attribute name="ResourceId" type="ST_ResourceId" use="optional"/>
        <xs:attribute name="Version" type="ST_VersionQuad" use="optional"/>
    </xs:complexType>

    <xs:complexType name="CT_ShellVisuals">
        <xs:attribute name="DefaultDisplayName" type="ST_DisplayName" use="optional"/>
        <xs:attribute name="PublisherDisplayName" type="ST_DisplayName" use="optional"/>
        <xs:attribute name="StoreLogo" type="ST_ImageFile" use="optional"/>
        <xs:attribute name="Square150x150Logo" type="ST_ImageFile" use="optional"/>
        <xs:attribute name="Square44x44Logo" type="ST_ImageFile" use="optional"/>
        <xs:attribute name="Square480x480Logo" type="ST_ImageFile" use="optional"/>
        <xs:attribute name="Description" type="ST_Description" use="optional"/>
        <xs:attribute name="ForegroundText" type="ST_ForegroundText" use="optional"/>
        <xs:attribute name="BackgroundColor" type="ST_Color" use="optional"/>
        <xs:attribute name="SplashScreenImage" type="ST_ImageFile" use="optional"/>
    </xs:complexType>

    <xs:simpleType name="ST_MemoryConfig">
        <xs:restriction base="xs:string">
            <xs:enumeration value="Standard"/>
            <xs:enumeration value="Advanced"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_ConsoleGeneration">
        <xs:restriction base="xs:string">
            <xs:enumeration value="XboxOne"/>
            <xs:enumeration value="Scarlett"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="CT_VirtualMachine">
        <xs:all>
            <xs:element name="XboxOneXTitleMemory" type="ST_MemoryConfig" minOccurs="0"/>
            <xs:element name="XboxAnacondaTitleMemory" type="ST_MemoryConfig" minOccurs="0"/>
            <xs:element name="SMTEnabled" type="xs:boolean" minOccurs="0"/>
            <xs:element name="RequiresEraShim" type="xs:boolean" minOccurs="0"/>
            <xs:element name="XboxCompatibility" type="ST_ConsoleGeneration" minOccurs="0"/>
            <xs:element name="DlcCompatibility" type="ST_ConsoleGeneration" minOccurs="0"/>
            <xs:element name="XboxLockhartTitleMemory" type="ST_MemoryConfig" minOccurs="0"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="CT_DesktopRegistration">
        <xs:sequence minOccurs="0" maxOccurs="unbounded">
            <xs:element name="ProcessorArchitecture" type="ST_ProcessorArchitecture" minOccurs="0"/>
            <xs:element name="MainPackageDependency " minOccurs="0">
                <xs:complexType>
                    <xs:attribute name="Name" type="ST_PackageName"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="DependencyList" type="CT_DependencyList" minOccurs="0"/>
            <xs:element name="CustomInstallActions" type="CT_CustomInstallActions" minOccurs="0"/>
            <xs:element name="ModFolder" minOccurs="0">
                <xs:complexType>
                    <xs:attribute name="Name" type="ST_FileNameNoPath" use="optional"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="DisableRegistryWriteVirtualization" type="xs:boolean" minOccurs="0"/>
            <xs:element name="DisableFilesystemWriteVirtualization" type="xs:boolean" minOccurs="0"/>
            <xs:element name="EnableWritesToPackageRoot" type="xs:boolean" minOccurs="0"/>
            <xs:element name="MultiplayerProtocol" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:boolean">
                            <xs:attribute name="Executable" type="ST_Executable"  use="optional"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="FileTypeAssociation" type="CT_FileTypeAssociation" minOccurs="0" maxOccurs="100"/>
        </xs:sequence>
    </xs:complexType>

    <xs:simpleType name="ST_KnownDependency">
        <xs:restriction base="xs:string">
            <xs:enumeration value="DX11"/>
            <xs:enumeration value="VC11"/>
            <xs:enumeration value="VC12"/>
            <xs:enumeration value="VC14"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_ProcessorArchitecture">
        <xs:restriction base="xs:string">
            <xs:enumeration value="x64"/>
            <xs:enumeration value="x86"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="CT_DependencyList">
        <xs:sequence maxOccurs="128" minOccurs="0">
            <xs:element name="KnownDependency" minOccurs="0">
                <xs:complexType>
                    <xs:attribute name="Name" type="ST_KnownDependency" use="required"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="Dependency" minOccurs="0">
                <xs:complexType>
                    <xs:attribute name="Name" type="ST_PackageName" use="required"/>
                    <xs:attribute name="MinVersion" type="ST_VersionQuad" use="required"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="CT_CustomInstallAction">
        <xs:attribute name="File" type="ST_FileName" use="required"/>
        <xs:attribute name="Name" type="ST_NonEmptyString" use="required"/>
        <xs:attribute name="Arguments" type="ST_NonEmptyString" />
    </xs:complexType>

    <xs:complexType name="CT_InstallActionList">
        <xs:sequence maxOccurs="100" minOccurs="0">
            <xs:element name="InstallAction" type="CT_CustomInstallAction" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="CT_RepairActionList">
        <xs:sequence maxOccurs="100" minOccurs="0">
            <xs:element name="RepairAction" type="CT_CustomInstallAction" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="CT_UninstallActionList">
        <xs:sequence maxOccurs="100" minOccurs="0">
            <xs:element name="UninstallAction" type="CT_CustomInstallAction" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="CT_CustomInstallActions">
        <xs:all>
            <xs:element name="Folder" type="ST_FileName" minOccurs="1"/>
            <xs:element name="InstallActionList" type="CT_InstallActionList" minOccurs="0"/>
            <xs:element name="RepairActionList" type="CT_RepairActionList" minOccurs="0"/>
            <xs:element name="UninstallActionList" type="CT_UninstallActionList" minOccurs="0"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="CT_ExecutableList">
        <xs:sequence maxOccurs="unbounded" minOccurs="0">
            <xs:element name="Executable">
                <xs:complexType>
                    <xs:attribute name="Name" type="ST_Executable" use="required"/>
                    <xs:attribute name="TargetDeviceFamily" type="ST_DeviceFamily" use="optional"/>
                    <xs:attribute name="Id" type="ST_ApplicationId" use="optional"/>
                    <xs:attribute name="IsDevOnly" type="xs:boolean" use="optional"/>
                    <xs:attribute name="OverrideDisplayName" type="ST_DisplayName" use="optional"/>
                    <xs:attribute name="OverrideLogo" type="ST_ImageFile" use="optional"/>
                    <xs:attribute name="OverrideSquare480x480Logo" type="ST_ImageFile" use="optional"/>
                    <xs:attribute name="OverrideSquare44x44Logo" type="ST_ImageFile" use="optional"/>
                    <xs:attribute name="OverrideSplashScreenImage" type="ST_ImageFile" use="optional"/>
                    <xs:attribute name="Alias" type="ST_ExecutableNoPath" use="optional"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="CT_AllowedProductsList">
        <xs:sequence maxOccurs="unbounded" minOccurs="0">
            <xs:element name="AllowedProduct" type="ST_StoreId"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="CT_ExtendedAttributeList">
        <xs:sequence maxOccurs="unbounded" minOccurs="0">
            <xs:element name="ExtendedAttribute">
                <xs:complexType>
                    <xs:attribute name="Name" type="ST_NonEmptyString" use="optional"/>
                    <xs:attribute name="Value" type="ST_NonEmptyString" use="optional"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="CT_RelatedProductsList">
        <xs:sequence maxOccurs="unbounded" minOccurs="0">
            <xs:element name="RelatedProduct" type="ST_StoreId"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="CT_MediaCapture">
        <xs:all>
            <xs:element name="GameDVRSystemComponent" type="xs:boolean" minOccurs="0"/>
            <xs:element name="BlockBroadcast" type="xs:boolean" minOccurs="0"/>
            <xs:element name="BlockGameDVR" type="xs:boolean" minOccurs="0"/>
        </xs:all>
    </xs:complexType>

    <xs:simpleType name="ST_AllowedAsciiCharSet">
        <xs:restriction base="ST_NonEmptyString">
            <xs:pattern value="[-_. A-Za-z0-9]+"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_AsciiIdentifier">
        <xs:restriction base="ST_AllowedAsciiCharSet">
            <xs:pattern value="[^_ ]+"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_PackageName">
        <xs:restriction base="ST_AsciiIdentifier">
            <xs:minLength value="3"/>
            <xs:maxLength value="50"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_DistinguishedName">
        <xs:restriction base="ST_NonEmptyString">
            <xs:pattern value="(CN|L|O|OU|E|C|S|STREET|T|G|I|SN|DC|SERIALNUMBER|(OID\.(0|[1-9][0-9]*)(\.(0|[1-9][0-9]*))+))=(([^,+=&quot;&lt;&gt;#;])+|&quot;.*&quot;)(, ((CN|L|O|OU|E|C|S|STREET|T|G|I|SN|DC|SERIALNUMBER|(OID\.(0|[1-9][0-9]*)(\.(0|[1-9][0-9]*))+))=(([^,+=&quot;&lt;&gt;#;])+|&quot;.*&quot;)))*"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_Publisher">
        <xs:restriction base="ST_DistinguishedName">
            <xs:maxLength value="8192"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_ResourceId">
        <xs:restriction base="ST_AsciiIdentifier">
            <xs:maxLength value="30"/>
        </xs:restriction>
  </xs:simpleType>

    <xs:simpleType name="ST_Port">
        <xs:restriction base="ST_NonEmptyString">
            <xs:pattern value="[1-9][0-9]{0,4}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="CT_DebugNetworkPortList">
        <xs:sequence maxOccurs="unbounded" minOccurs="0">
            <xs:element name="DebugNetworkPort" type="ST_Port"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="CT_DevelopmentOnly">
      <xs:all>
        <xs:element name="ContentIdOverride" type="ST_GUID" minOccurs="0"/>
        <xs:element name="EKBIDOverride" type="ST_GUID" minOccurs="0"/>
        <xs:element name="DebugNetworkPortList" type="CT_DebugNetworkPortList" minOccurs="0"/>
      </xs:all>
    </xs:complexType>

    <xs:simpleType name="ST_FTAInfoTip">
        <xs:restriction base="ST_NonEmptyString">
            <xs:maxLength value="1024"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_ContentTypeCharSet">
        <xs:restriction base="ST_NonEmptyString">
            <xs:pattern value="[!#$%&amp;'*+-.^_`|~0-9a-z/]*"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_ContentType">
        <xs:restriction base="ST_ContentTypeCharSet">
            <xs:pattern value="[^/]{1,127}/[^/]{1,127}"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_FileType">
        <xs:restriction base="ST_FileNameCharSet">
            <xs:pattern value="\.[^.\\]+"/>
            <xs:maxLength value="64"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="CT_FTASupportedFileTypes">
        <xs:sequence>
            <xs:element name="FileType" maxOccurs="1000" >
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="ST_FileType">
                            <xs:attribute name="ContentType" type="ST_ContentType" use="optional"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

    <xs:simpleType name="ST_FTAName">
        <xs:restriction base="ST_AllowedAsciiCharSet">
            <xs:pattern value="[^ A-Z]+"/>
            <xs:maxLength value="100"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="CT_FileTypeAssociation">
        <xs:all>
            <xs:element name="DisplayName" type="ST_DisplayName" minOccurs="0"/>
            <xs:element name="Logo" type="ST_ImageFile" minOccurs="0"/>
            <xs:element name="InfoTip" type="ST_FTAInfoTip" minOccurs="0"/>
            <xs:element name="EditFlags" minOccurs="0">
                <xs:complexType>
                    <xs:attribute name="OpenIsSafe" type="xs:boolean" use="optional"/>
                    <xs:attribute name="AlwaysUnsafe" type="xs:boolean" use="optional"/>
                </xs:complexType>
            </xs:element>
            <xs:element name="SupportedFileTypes" type="CT_FTASupportedFileTypes"/>
        </xs:all>
        <xs:attribute name="Name" type="ST_FTAName" use="required"/>
        <xs:attribute name="Executable" type="ST_Executable"  use="optional"/>
    </xs:complexType>

    <xs:simpleType name="ST_GameSaveNoCodePcRootRelativeLocation">
        <xs:restriction base="xs:string">
            <xs:enumeration value="AppData"/>
            <xs:enumeration value="Public"/>
            <xs:enumeration value="LocalAppData"/>
            <xs:enumeration value="LocalAppDataLow"/>
            <xs:enumeration value="ProgramData"/>
            <xs:enumeration value="SavedGames"/>
            <xs:enumeration value="UserProfile"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:simpleType name="ST_GameSaveUserQuotaSize">
        <xs:restriction base="xs:integer">
            <xs:maxInclusive value="4096"/>
            <xs:minInclusive value="256"/>
        </xs:restriction>
    </xs:simpleType>

    <xs:complexType name="CT_SaveGameStorage">
        <xs:all>
            <xs:element name="NoCodePCRoot" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="ST_FileName">
                            <xs:attribute name="RelativeTo" type="ST_GameSaveNoCodePcRootRelativeLocation" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="SCID" type="ST_GUID" minOccurs="0"/>
            <xs:element name="MaxUserQuota" type="ST_GameSaveUserQuotaSize" minOccurs="0"/>
        </xs:all>
    </xs:complexType>

    <!-- Root -->
    <xs:element name="Game">
        <xs:complexType>
            <xs:all>
                <xs:element name="Identity" type="CT_Identity" />
                <xs:element name="ShellVisuals" type="CT_ShellVisuals" minOccurs="0"/>
                <xs:element name="Resources" type="CT_Resources" minOccurs="0"/>
                <xs:element name="ExecutableList" type="CT_ExecutableList" minOccurs="0"/>
                <xs:element name="GameOsVersion" type="ST_VersionQuad" minOccurs="0"/>
                <xs:element name="MediaCapture" type="CT_MediaCapture" minOccurs="0"/>
                <xs:element name="StoreId" type="ST_StoreId" minOccurs="0" />
                <xs:element name="TargetDeviceFamilyForDLC" type="ST_DeviceFamily" minOccurs="0"/>
                <xs:element name="AllowedProducts" type="CT_AllowedProductsList" minOccurs="0"/>
                <xs:element name="RelatedProducts" type="CT_RelatedProductsList" minOccurs="0"/>
                <xs:element name="PersistentLocalStorage" type="CT_PersistentLocalStorage" minOccurs="0"/>
                <xs:element name="VirtualMachine" type="CT_VirtualMachine" minOccurs="0"/>
                <xs:element name="MSAFullTrust" type="xs:boolean" minOccurs="0"/>
                <xs:element name="MSAAppId" type="ST_NonEmptyString" minOccurs="0"/>
                <xs:element name="TitleId" type="ST_Hex8" minOccurs="0"/>
                <xs:element name="RequiresXboxLive" type="xs:boolean" minOccurs="0"/>
                <xs:element name="ExtendedAttributeList" type="CT_ExtendedAttributeList" minOccurs="0"/>
                <xs:element name="DesktopRegistration" type="CT_DesktopRegistration" minOccurs="0"/>
                <xs:element name="DevelopmentOnly" type="CT_DevelopmentOnly" minOccurs="0"/>
                <xs:element name="AdvancedUserModel" type="xs:boolean" default="true" minOccurs="0" maxOccurs="1" />
                <xs:element name="SaveGameStorage" type="CT_SaveGameStorage" minOccurs="0"/>
            </xs:all>
            <xs:attribute name="configVersion" use="required">
                <xs:simpleType>
                    <xs:restriction base="xs:integer">
                        <xs:maxInclusive value="1"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
        </xs:complexType>
        <xs:unique name="Resource_Language">
            <xs:selector xpath="Resources/Resource"/>
            <xs:field xpath="@Language"/>
        </xs:unique>
    </xs:element>
</xs:schema>

Return to the top of this topic.

Previous Element reference

  • PrimaryServiceConfig was an element used in Xbox One ERA AppxManifest.xml to define SCID calls. This is now defined in code and configured in DevCenter.
  • VisualElements was an element used in Xbox One ERA AppxManifest.xml to define Store logos and other visual aspects of the title. This is now defined in ShellVisuals.
  • GpuAvailability was an element used in Xbox One ERA AppxManifest.xml to define GPU availability. This is now done automatically as all Microsoft Game Development Kit (GDK) titles automatically get variable setting (as much GPU as possible).
  • ConnectedStorageQuota was an element used in Xbox One ERA AppxManifest.xml to define connected storage size. This is now determined by a server-side setting.
  • LicenseOverrides was an element used in Xbox One ERA debug_licensing_overrides.xml to define overrides for ContentID, ProductID and EKBID. This is now managed in the MicrosoftGame.config directly with the ContentIDOverride, StoreId and EKBIDOverride elements.
  • NetworkManifest elements were defined in a previous version of MicrosoftGame.config. These are now done through existing Networking APIs with the exception of the DebugNetworkPortList elements.
  • XboxOneTitleMemoryMaxMB & XboxOneXTitleMemoryMaxMB was an element used in a previous version of MicrosoftGame.config. The XboxOneTitleMemoryMaxMB is no longer configurable and the Xbox One X and Xbox Series S|X elements for Title Memory configuration are now XboxOneXTitleMemory, XboxLockhartTitleMemory and XboxAnacondaTitleMemory.
  • packageWriteRedirectionCompatibilityShim was previously an ExtendedAttribute value to enable this functionality ahead of the May 2020 GDK. As of the May 2020 GDK, this is now tracked as it's own element, EnableWritesToPackageRoot.

Return to the top of this topic.

Restricted Capabilities Configuration

In Microsoft Game Development Kit (GDK), restricted capabilities are configured via MicrosoftGame.config elements. A mapping of commonly used capabilities are as follows.

  • runFullTrust capability is configured to be enabled by default.
  • customInstallActions capability is configured by the CustomInstallActions element.

Restricted Capabilities require emailing your Account Manager to ensure permissions for these are enabled (this is required in addition to properly updating your MicrosoftGame.config). For more information on these capabilities and how to configure your MicrosoftGame.config to use them in your PC game, see Getting started with packaging titles for PC.

MicrosoftGame.config as part of DLC package creation

For more information on how to generate a MicrosoftGame.config for a DLC package, please see Downloadable content (DLC) packages.

Return to the top of this topic.

See also

MicrosoftGame.config Element Reference
MicrosoftGame.Config
MicrosoftGame.Config Overview
MicrosoftGame.Config Localization
Overview of packaging
PC Bootstrapper