> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Getting started with MSIXVC2 packaging for PC

> Getting started with MSIXVC2 packaging for PC

Use the following steps to create an MSIXVC2 package that you can sideload for testing on your development PC and then upload to Partner Center for publishing.

For background on the format and its benefits, see [MSIXVC2 packaging overview](/build/core-features/common/packaging/overviews/packaging-msixvc2-overview).

<Info>
  MSIXVC2 is generally available starting with the October 2026 Microsoft Game Development Kit (GDK). You can sideload MSIXVC2 packages for testing and submit them to certification for public release.
</Info>

<Note>
  Some MSIXVC2 features and improvements come through updates to the Gaming Runtime Services and don't require a GDK update. You automatically receive these enhancements as they become available.
</Note>

<Note>
  If you're packaging for XBOX consoles, see [Getting started packaging for XBOX consoles](/build/core-features/common/packaging/overviews/packaging-getting-started-for-console). Console games continue to use XVC. The `makepkg` tool handles both formats.
</Note>

## Before you begin

* **Windows 10** version 18362 or later on your development PC.
* **October 2026 GDK or later** installed. The GDK includes `makepkg.exe`.

<Note>
  Starting with the October 2026 GDK, the managed packaging tool is named `makepkg.exe`. The legacy MakePkg.exe and the temporary `makepkg2.exe` name are removed.
</Note>

* **Partner Center product** You need your publisher identity, package name, and Store ID.
* **Developer mode** enabled on your target test PC.
* **MSIXVC2 developer mode registry key** set on any device where you install or run MSIXVC2 packages. See [Step 7](#step-7-test-your-package-locally) for details.

## Step 1: Prepare your content

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

Remove the following files if they're present:

* PDB files.
* Any references to other PC game stores, such as assets, binaries, and more.
* Universal Windows Platform (UWP) and Appx "footprint" files, including AppxSignature.p7x and AppxBlockMap.xml.

## Step 2: Create your MicrosoftGame.config

Create a MicrosoftGame.config file in the root directory of your game content. This configuration file works with MSIXVC. Your existing MicrosoftGame.config works unchanged with MSIXVC2.

You can create this file manually or by using the [MicrosoftGame.config Editor](/build/core-features/common/game-config/MicrosoftGameConfig-Editor), which syncs identity and ID values directly from your Partner Center project.

For a sample MicrosoftGame.config file, see [Getting started with MSIXVC for PC](/build/core-features/common/packaging/overviews/packaging-getting-started-for-PC#sample-microsoftgameconfig).

## Step 3: Identify Visual C/C++ runtime dependencies

Make sure your MicrosoftGame.config lists any Visual C/C++ runtime dependencies or you explicitly copy these dependencies into your package payload. For more information, see [Framework package dependencies](/build/core-features/common/packaging/packaging-framework-packages).

## Step 4: Create your icons

Place icon files in the root folder of your game content (or a subdirectory), scaled to the sizes specified in your MicrosoftGame.config `ShellVisuals` section. The [MicrosoftGame.config Editor](/build/core-features/common/game-config/MicrosoftGameConfig-Editor) can generate these images from a single source image.

## Step 5: Generate a layout mapping file (optional)

This step is optional. By default, MSIXVC2 packages all content into a single chunk. You only need a layout mapping file if you want to split content into multiple chunks or add Intelligent Delivery tags.

To generate a layout mapping file, open a GDK command prompt and run the following command:

```text theme={null}
makepkg genmap /f layout.xml /d <your_game_folder>
```

This command creates a layout mapping file that defines how your content is organized into chunks. The generated file contains a single chunk. You can edit the file to split content into multiple chunks or add Intelligent Delivery tags as needed.

<Tip>
  With MSIXVC2, reordering chunks or moving files between chunks doesn't affect content update sizes. You can freely organize your layout without worrying about the update penalty that exists with MSIXVC.
</Tip>

For more information about layout files, see [Deployment Package Schema](/build/core-features/common/packaging/deployment/atoc-deployment-schema).

## Step 6: Create your MSIXVC2 package

Create the package:

```text theme={null}
makepkg pack /msixvc2 /f layout.xml /d <your_game_folder> /pc /pd <output_folder>
```

Key options:

| Option               | Description                                                                                                                                                                  |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `/msixvc2`           | Generates an MSIXVC2 package. Without this option, the command generates an MSIXVC package. Starting with the April 2027 GDK, `makepkg` creates MSIXVC2 packages by default. |
| `/f <mapfile>`       | Specifies the layout mapping file. If omitted, a default single-chunk layout is generated.                                                                                   |
| `/d <sourcedir>`     | The directory containing your game content and MicrosoftGame.config.                                                                                                         |
| `/pc`                | Generates a package for use on PC.                                                                                                                                           |
| `/pd <outputdir>`    | The directory where the generated package is placed.                                                                                                                         |
| `/compress <method>` | Compress the output. Available methods: `Automatic` (default), `None`. `Automatic` uses Brotli for MSIXVC2 packages.                                                         |

## Step 7: Test your package locally

Enable developer mode on your target PC. Before installing an MSIXVC2 package, set the following registry key on the target device:

```text theme={null}
reg add HKLM\SOFTWARE\Microsoft\GamingServices /v Xvc2DeveloperMode /t REG_DWORD /d 1 /f
```

Alternatively, you can enable MSIXVC2 developer mode by using `packageutil`:

```text theme={null}
packageutil set msixvc2 on
```

To disable MSIXVC2 developer mode:

```text theme={null}
packageutil set msixvc2 off
```

<Note>
  The `packageutil set` command requires the October 2026 GDK or later.
</Note>

<Info>
  This registry key is required until a future GDK release. Without it, MSIXVC2 packages won't install. Run the command from an elevated (administrator) command prompt.
</Info>

Then install your package:

```text theme={null}
wdapp install <your_package.msixvc>
```

MSIXVC2 packages install to the `[drive]:\XboxGames` folder. Files are installed in their original form and you can access them directly. This install location is the same location used by MSIXVC packages with [Flat File Install](/build/core-features/common/packaging/packaging-flatfileinstall).

You can upload the same package that you sideload locally to Partner Center - there's no separate submission package step.

## Step 8: Upload to Partner Center

<Info>
  Publish MSIXVC2 packages to a **new branch** in Partner Center (for example, `msixvc2`). Don't upload MSIXVC2 packages to the same branch as your existing MSIXVC packages. The two formats aren't interchangeable within a branch, and reverting a branch from MSIXVC2 back to MSIXVC requires a full upload and download of the package. For more information, see [Package branch best practices](/build/core-features/common/packaging/overviews/packaging-msixvc2-overview#package-branch-best-practices).
</Info>

You have two options for uploading to Partner Center.

### Option A: Upload a pre-built package

If you already created a package in Step 6, upload it directly:

```text theme={null}
makepkg upload /pd <package_directory> /branch msixvc2
```

### Option B: Upload from loose files (one-command workflow)

You can combine packaging and uploading into a single command. This command uploads directly from your build output without creating a local package file:

```text theme={null}
makepkg upload /d <your_game_folder> /msixvc2 /pc /branch msixvc2
```

### Upload options

| Option               | Description                                                                                                                    |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `/branch <branch>`   | The branch to upload to. Defaults to `main`. Use a dedicated MSIXVC2 branch.                                                   |
| `/flight <flight>`   | The flight to upload to. Can't be used with `/branch`.                                                                         |
| `/market <market>`   | The market to upload to. Defaults to `default`.                                                                                |
| `/storeid <storeId>` | The Store ID. Extracted from the package if not specified.                                                                     |
| `/auth <method>`     | Authentication method. Default is `CacheableBrowser`. See [Authentication methods](#authentication-methods) for CI/CD options. |

For the full list of upload options, see [Make package (makepkg.exe)](/build/core-features/common/packaging/deployment/makepkg).

<a id="authentication-methods" />

## Authentication methods

The `upload` command supports multiple authentication methods for different environments.

| Method                     | Use case                                                                                     |
| -------------------------- | -------------------------------------------------------------------------------------------- |
| `CacheableBrowser`         | Default. Opens a browser for interactive sign-in. Caches credentials for subsequent uploads. |
| `Browser`                  | Opens a browser for interactive sign-in without caching.                                     |
| `AzureCli`                 | Uses Azure CLI credentials. Useful when already authenticated via `az login`.                |
| `AzurePipelines`           | Uses the Azure Pipelines service connection. Ideal for Azure DevOps CI/CD pipelines.         |
| `ManagedIdentity`          | Uses an Azure Managed Identity. Requires `/clientid`.                                        |
| `ManagedIdentityFederated` | Uses a federated Managed Identity. Requires `/clientid` and `/resourceid`.                   |
| `ClientSecret`             | Uses a client ID and secret. Requires `/clientid` and `/clientsecret`.                       |
| `ClientCertificate`        | Uses a client certificate. Requires `/clientid` and `/certthumbprint`.                       |
| `Environment`              | Uses credentials from environment variables.                                                 |
| `Default`                  | Tries multiple methods in sequence.                                                          |

**Example: CI/CD pipeline upload**

```text theme={null}
makepkg upload /pd <package_directory> /auth AzurePipelines /branch <branch>
```

**Example: Service principal upload**

```text theme={null}
makepkg upload /pd <package_directory> /auth ClientSecret /clientid <appId> /clientsecret <secret> /branch <branch>
```

## Step 9: Validate and publish in Partner Center

After uploading, use Partner Center to validate and publish your package. The submission flow is unchanged from MSIXVC - select your package, configure availability, and submit.

You can publish MSIXVC2 packages to your sandboxes for testing and submit them to certification for public release.

<Tip>
  Keep your existing MSIXVC pipeline running for production releases. Use a separate Partner Center branch for MSIXVC2 evaluation so you can compare results side-by-side and migrate to MSIXVC2 at GA without disrupting your live game.
</Tip>

## Comparing update sizes

To evaluate the benefit of MSIXVC2 for your title, create packages from two sequential builds and compare:

```text theme={null}
makepkg pack /msixvc2 /f layout.xml /d <old_build> /pc /pd <output_old>
makepkg pack /msixvc2 /f layout.xml /d <new_build> /pc /pd <output_new> /priorpackage <output_old\package.msixvc>
```

Compare the resulting update size against an equivalent MSIXVC build to see the difference.

## Intelligent Delivery with MSIXVC2

Intelligent Delivery works the same way with MSIXVC2 as with MSIXVC. You define chunks in your layout mapping file and set language, device, or tag specifiers. The key difference is that reorganizing chunks or moving files between chunks has no impact on content update sizes.

For more information, see [Streaming Installation and Intelligent Delivery: an overview](/build/core-features/common/packaging/overviews/streaming_install-intelligent_delivery).

## See also

[MSIXVC2 packaging overview](/build/core-features/common/packaging/overviews/packaging-msixvc2-overview) [Make package (makepkg.exe)](/build/core-features/common/packaging/deployment/makepkg) [Getting started with MSIXVC for PC](/build/core-features/common/packaging/overviews/packaging-getting-started-for-PC) [Content updates with MSIXVC2](/build/core-features/common/packaging/packaging-updates-msixvc2) [MSIXVC2 encryption model](/build/core-features/common/packaging/packaging-encryption-msixvc2) [XBOX Game Package Manager](/build/core-features/common/packaging/xgpm) [Automating package uploading](/build/core-features/common/packaging/package-uploader) [Flat File Install overview](/build/core-features/common/packaging/packaging-flatfileinstall) [Deployment Package Schema](/build/core-features/common/packaging/deployment/atoc-deployment-schema)
