Package a PC game in original MSIXVC

This article describes original MSIXVC packaging with the October 2026 GDK. To enable the /msixvc2 packaging improvements, follow Package and upload a PC game. Both configurations use makepkg.exe, MicrosoftGame.config, layout mapping files, and the .msixvc file extension.

Important

The commands below rely on the October 2026 default: omitting /msixvc2 with /pc selects original MSIXVC. Don't reuse that assumption with later GDK releases. See Scope and timeline for planned changes and guidance on retaining tools that create original MSIXVC packages.

Use the following steps to create a package, sideload it on your test PC, and prepare it for Partner Center. Replace angle-bracket placeholders with your values, without the brackets, and quote paths containing spaces.

Check the Windows version

Windows 10 build 18362 or later is required for deployment testing.

Evaluate your packaging needs

If your package has any of the following properties or needs any of the following features, see the Other packaging considerations and advanced features section later in this article.

  • Framework package dependencies
    If your app relies on redistributable software, you can use prepackaged versions of many of these prerequisites from Microsoft, which you can declare as dependencies and install automatically.

  • Custom installation actions
    If your app relies on redistributable software that doesn't have a framework package available, you can chain-install these dependencies.

Prepare your content

Place all source material for your title in a single directory. Remove any files that the MSIXVC packaging system doesn't support or that are unsuitable for shipping in retail packages.

  • Program database (PDB) files.

  • Universal Windows Platform (UWP) and APPX footprint files, including AppxSignature.p7x and AppxBlockMap.xml.
    If you previously shipped as a UWP in Microsoft Store, you might have some of these files associated with your APPX or MSIX package. Remove these files.

  • Any references to other PC game stores: assets, binaries, and more.

Get your product's identity info from Partner Center

Your package references the product identity assigned to your game in Partner Center, including your publisher identity, PackageFamilyName, MSAAppId, and TitleId. Set up your product and retrieve this information from the Game Setup | Identity page for use in your MicrosoftGame.config.

  1. If you haven't already, register for the ID@Xbox program and create a Partner Center account.
  2. Create an initial product definition for your game in Partner Center.
  3. On the Game Setup | Identity page for your product, find the identity values listed above.

Create MicrosoftGame.config

Create MicrosoftGame.config in the root folder of your game content. Use the sample configuration later in this article and the MicrosoftGame.config Editor, which can retrieve ID and name values from your Partner Center project.

Identify any Visual C/C++ runtime dependencies

Identify any Visual C/C++ runtime dependencies of your package. Ensure they're listed as dependencies in your MicrosoftGame.config or are explicitly copied into your package payload. For more information, see Framework package dependencies.

Create your icons for display in the shell and store packages

For each image listed in the following MicrosoftGame.config sample, place a corresponding file in the root folder of your game, scaled to the size specified. Alternatively, place image assets in a subdirectory, and adjust the ShellVisuals icon paths to match. The MicrosoftGame.config Editor provides the ability to generate these images for you with a single source image as input.

Install the GDK packaging tools

Install the October 2026 GDK for the command behavior described here.

By default, the Microsoft Game Development Kit (GDK) command prompts are in this folder:
C:\Program Files (x86)\Microsoft GDK\Command Prompts

Create your packaging layout mapping file

Open a Microsoft Game Development Kit (GDK) command prompt in the folder that contains a single folder with all your game content, and then run the following command:

makepkg genmap /f layout.xml /d <your_game_folder>

This command creates layout.xml. An explicit layout file is recommended so you can review the installation layout and configure streaming installation and Intelligent Delivery. It isn't required: if you omit /f when packaging, makepkg generates a default single-chunk layout. For more information, see Make package (makepkg.exe).

Use Intelligent Delivery to determine how to reduce installation sizes

To learn how to reduce installation sizes by tagging content in your layout.xml file, see Overview of Intelligent Delivery. Consider using Intelligent Delivery if you have sizable localized assets or content that shouldn't be installed by default but should be available for download when triggered by your game.

Create your package

Create the package by using the following command:

makepkg pack /f layout.xml /d <your_game_folder> /pc /pd <output_folder>

If you skipped layout-file generation, omit /f layout.xml.

For licensing-dependent scenarios, such as the in-game store and trials, use /contentid with the content ID assigned by Partner Center. Partner Center generates this ID when it first ingests the package. You can find it in the submitted package's details on the Packages page.

Enable developer mode on your target PC

  1. Open Settings.

  2. Enter Developer in the search field. From the options displayed, select Use developer features.

  3. Select Developer mode. A dialog box appears, saying that the system is adding some features. Before moving beyond this step, wait for this process to finish.

Test your app installation

Run the following command:

wdapp install <your_package.msixvc>

The package must exist on a local drive on your development PC, or on a network location mapped to a drive letter. Installation from Universal Naming Convention (UNC) shares isn't yet supported. If you don't see progress, you can open the Microsoft Store app and view the progress under the Downloads and updates section indicated by a downward-pointing arrow in the upper-right corner of the app, if present. You can also select the ellipsis (...), and then select Downloads and updates.

Since the March 2022 GDK, MSIXVC packages install to the [drive]:\XboxGames folder as flat files. Game data files are accessible directly; executables designated in MicrosoftGame.config remain encrypted. You can configure the install drive by using Application Management (wdapp.exe). For details, see Flat File Install overview.

Prepare your final package, and then submit it to Partner Center

The preceding makepkg pack command uses the default test encryption. Before submission, package again with /lk <key.lekb> to use a stable key, or /l to use a unique key, unless the Certification team directs you otherwise. Prefer /lk: it supports local update-size comparisons and delta upload optimizations. See makepkg genkey to generate the key file.

Include the package and its .ekb file when uploading. For the submission procedure, see Publishing your game in Partner Center.

Sample MicrosoftGame.config

Create a file named MicrosoftGame.config. Use the following content in the root directory of your game content, and then remove any comments for items that you don't need.

While you can manually create the MicrosoftGame.config, the best way to create this file is by using the MicrosoftGame.config Editor. This tool also makes it easy to sync Identity and ID values directly from your Partner Center project.

<?xml version="1.0" encoding="utf-8"?>
<Game configVersion="1">
    <!-- Publisher should match the exact value provided in the "Package/Identity/Publisher" field of the Game setup -> Identity section of your product's configuration area in Partner Center.
         Name should match the exact value provided in the "Package/Identity/Name" field of the Game setup -> Identity section of your product's configuration area in Partner Center. -->
    <Identity Name="**REPLACE**"
        Publisher="**REPLACE**"
        Version="1.0.1.0"/>
        <!-- For MSIXVC/MSIXVC2 the fourth digit of the version number is reserved for Microsoft Store use -->

    <!-- These values are found in the Game Setup -> Identity section in your product's configuration area in Partner Center. -->
    <StoreId>**REPLACE WITH STOREID**</StoreId>
    <MSAAppId>**REPLACE WITH MSAAPPID**</MSAAppId>
    <TitleId>**REPLACE WITH TITLEID**</TitleId>

    <!--  Include any additional languages your title supports as appropriate -->
    <Resources>
      <Resource Language="en-US" />
    </Resources>

     <!-- Use override display name if you want to display a different title in the shell than the DefaultDisplayName from the ShellVisuals section, or if you need to localize it. -->

     <!-- Configuring the Alias attribute will allow you to take advantage of Execution Alias functionality when launching your executable. For more information, please see the MicrosoftGame.config reference documentation. -->

    <ExecutableList>
      <Executable Name="**REPLACE**"
                  Id="Game"
                  Alias="**REPLACE**"
                  OverrideDisplayName="**REPLACE**"
                  />
    </ExecutableList>

    <!-- DefaultDisplayName should match the exact value provided in the "Package/Identity/Name" field of the Game setup -> Identity section of your product's configuration area in Partner Center.
         PublisherDisplayName should use the exact value provided in the "Package/Properties/PublisherDisplayName" field of the Game setup -> Identity section of your product's configuration area in Partner Center.-->
    
    <!-- The following asset sizes apply
         StoreLogo - 100x100
         Square150x150Logo - 150x150
         Square44x44Logo - 44x44
         SplashScreenImage - 1920x1080
    -->
    <ShellVisuals DefaultDisplayName="**REPLACE**" 
                  PublisherDisplayName="**REPLACE**"
                  StoreLogo="StoreLogo.png"
                  Square150x150Logo="Logo.png"
                  Square44x44Logo="SmallLogo.png"
                  Description="**REPLACE**"
                  BackgroundColor="#000040"
                  SplashScreenImage="SplashScreen.png"/>
    
    <DesktopRegistration>
      <!-- Include this section if you need to run a custom installer action with Administrator privileges the first time that your game runs.
           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.
      <CustomInstallActions>
        <Folder>Installers</Folder>
        <InstallActionList>
          <InstallAction File="CustomInstaller.exe" Name="UniqueInstallTaskName" Arguments="/silent /example" />
        </InstallActionList>
      </CustomInstallActions>
      -->
      <DependencyList>
        <!-- Omit the Dependency items if your game doesn't need them, or the entire DependencyList element. Note that your version of VCLibs may be different. See the Framework package dependencies topic of the documentation for details and guidance. -->
        <KnownDependency Name="VC11"/>
      </DependencyList>
        <!-- Select the ProcessorArchitecture that matches your game executables. -->
      <ProcessorArchitecture>x64</ProcessorArchitecture>
      <!--<ProcessorArchitecture>x86</ProcessorArchitecture>-->

      <!-- Include this section if your game uses Xbox services Multiplayer invites.
      <MultiplayerProtocol>true</MultiplayerProtocol>
      -->
    </DesktopRegistration>

    <!-- Include this section if your game writes files to its installation directory, and you're unable to change this by altering your source code and recompiling your game.
    <ExtendedAttributeList>
      <ExtendedAttribute Name="RestrictedCapability" Value="packageWriteRedirectionCompatibilityShim"/>
    </ExtendedAttributeList>
    -->
</Game>

Other packaging considerations and advanced features

Framework packages for common software dependencies

If your app relies on some redistributable software and that software is available in the Microsoft Store as a framework package, declare a dependency on the framework package instead of chain-installing the redistributable.

For example, if your app uses the legacy DirectX runtime which historically was satisfied by using the dxsetup.exe redistibuted from the Microsoft downloads site, declare a dependency on the framework package alongside the standard dependencies on Windows.Universal and Windows.Desktop as follows. This approach is preferred over installing the redist directly by using a custom install action, because the framework packages can automatically be updated via the Microsoft Store, and custom install actions require administrator approval and generate acknowledgment prompts as part of the install process.

<DependencyList>
  <KnownDependency Name="DX11"/>
</DependencyList>

For a full list of known dependencies, refer to documentation for MicrosoftGame.config Element - KnownDependency.

At installation time, the operating system and Microsoft Store ensure that this package dependency is installed along with your app. For more information, including information about DirectX and Visual Studio C/C++ runtime framework package dependencies, see Framework package dependencies.

Mods support

Starting with the March 2022 Microsoft Game Development Kit (GDK), mods are supported by default. For more information, see Mods.

Custom installation actions

If your app relies on other installers (.exe or .msi files) that must be chain-installed when your app is installed, use the CustomInstallActions element to configure this step.

For redistributables, check whether a framework package is available and contains the prerequisites you need before deciding to use a custom installer for things like VC runtime or DirectX redistributable .exe or .msi files. For detailed instructions about custom installation actions, see Custom installation actions.

Restricted capability permissions

In addition to configuring your MicrosoftGame.config file to include the correct elements, email your Account Manager to enable permissions to be set for your title to use the following features.

  • Custom installation actions (CustomInstallActions element).

PC packaging improvements
Package and upload a PC game
Getting started packaging titles for Xbox consoles
MicrosoftGame.Config
Utilizing Microsoft Game Development Kit tools to install and launch your PC title
PC Bootstrapper