> ## 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.

# packageutil.exe

> packageutil.exe

PackageUtil inspects, compares, and extracts content from XVC, MSIXVC, and MSIXVC2 package files.

```text theme={null}
packageutil <command> [options]
```

## Global options

| Option     | Description                            |
| ---------- | -------------------------------------- |
| `/v`       | Enables verbose output to the console. |
| `/?`, `/h` | Shows help and usage information.      |

## Commands

* [`info`](#info) - Displays package metadata.
* [`compare`](#compare) - Compares two packages and reports differences.
* [`license`](#license) - Displays signing key information.
* [`osinfo`](#osinfo) - Displays game OS information.
* [`chunkinfo`](#chunkinfo) - Displays chunk details.
* [`fileinfo`](#fileinfo) - Displays file details.
* [`extract`](#extract) - Extracts files from a package.
* [`set`](#set) - Changes a PackageUtil setting.

## info

Provides package information, including the version number, ContentID, ProductID, GameOS version, and encryption key IDs.

```text theme={null}
packageutil info <packagefile>
```

### Arguments

| Argument        | Description                            |
| --------------- | -------------------------------------- |
| `<packagefile>` | Specifies the package file to examine. |

## compare

Compares a base package with an updated package and reports the differences, including update size and changed segments.

```text theme={null}
packageutil compare <basepackagefile> <updatedpackagefile> [options]
```

### Arguments

| Argument               | Description                                           |
| ---------------------- | ----------------------------------------------------- |
| `<basepackagefile>`    | Specifies the base package for the update comparison. |
| `<updatedpackagefile>` | Specifies the updated package for the comparison.     |

### Options

| Option       | Description                                            |
| ------------ | ------------------------------------------------------ |
| `/quiet`     | Prints only summary information.                       |
| `/out <out>` | Specifies the output directory for comparison reports. |

PackageUtil produces an HTML report of the content downloaded when updating from the base package to the updated package. The report includes an estimated update download size.

Both packages must use `/lk` encryption or the default encryption mode. Don't use `/l`, because the comparison results aren't accurate for packages that use a unique content license.

## license

Displays information about the signing key used on a package. It can also check whether an EKB file matches the package.

The command reports one of the following values:

* Submission signed (`/l`) - only for submission to Partner Center.
* Test signed (`/lt`) - sideload enabled and insecurely encrypted.

<Note>
  Currently, `packageutil license` reports `/lk`-signed packages as `/l`-signed packages.
</Note>

```text theme={null}
packageutil license <packagefile> [<ekbfile>]
```

### Arguments

| Argument        | Description                                                                                                                                                                                   |
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `<packagefile>` | Specifies the package file to examine.                                                                                                                                                        |
| `<ekbfile>`     | Optionally specifies an EKB file to check against the package. Before certification, use this check to ensure that you're providing the EKB file associated with the package being certified. |

## osinfo

Provides information about a game OS, including its GUID and four-part version number.

```text theme={null}
packageutil osinfo <gameos>
```

### Arguments

| Argument   | Description                            |
| ---------- | -------------------------------------- |
| `<gameos>` | Specifies the game OS file to examine. |

## chunkinfo

Provides information about the chunks in a package, including chunk ID, chunk size, and Intelligent Delivery specifiers.

```text theme={null}
packageutil chunkinfo <packagefile>
```

### Arguments

| Argument        | Description                            |
| --------------- | -------------------------------------- |
| `<packagefile>` | Specifies the package file to examine. |

## fileinfo

Provides information about files in a package, including file names, sizes, and segment details.

```text theme={null}
packageutil fileinfo <packagefile> [options]
```

### Arguments

| Argument        | Description                            |
| --------------- | -------------------------------------- |
| `<packagefile>` | Specifies the package file to examine. |

## extract

Extracts one or more files from a package to an output directory.

<Note>
  Extract is supported only for MSIXVC2 packages.
</Note>

<Note>
  Extract can only extract from unencrypted packages. For example, it can't extract from a package file on the XBOX CDN.
</Note>

```text theme={null}
packageutil extract /package <packagefile> /out <outputdir> [options]
```

### Options

| Option               | Description                                                         |
| -------------------- | ------------------------------------------------------------------- |
| `/package <package>` | Specifies the MSIXVC2 package file.                                 |
| `/file <file>`       | Specifies one file to extract. If omitted, all files are extracted. |
| `/out <out>`         | **(Required)** Specifies the output directory.                      |

**Sample usage:**

```text theme={null}
packageutil extract /package MyGame.msixvc /out extracted_files
```

## set

Changes a PackageUtil setting. Use `set msixvc2` to turn MSIXVC2 developer mode on or off on the current device.

```text theme={null}
packageutil set msixvc2 <on|off>
```

Run this command from an elevated command prompt.

## JSON output for middleware and custom tooling

When you run `compare`, PackageUtil creates a JSON companion file with the HTML report. Middleware, engines, and custom tools can use this file to inspect the package layout, locate files in the package binary, verify alignment, or extract structural information without unpacking the package.

The `fileinfo` command also produces structured output suitable for machine processing.

The JSON output uses abbreviated field names to keep the file size small.

| Abbreviated name | Full name | Description                                            |
| ---------------- | --------- | ------------------------------------------------------ |
| `O`              | Offset    | The byte offset of a data segment in the package file. |
| `L`              | Length    | The length of a data segment in bytes.                 |

## Related topics

[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 MSIXVC2 for PC](/build/core-features/common/packaging/overviews/packaging-getting-started-for-PC-msixvc2)


## Related topics

- [XBOX environment tools and APIs](/tools/tools-console/gc-xbox-tools-and-apis-toc.md)
- [Command-line tools for PC development](/tools/tools-pc/commandlinetools/gr-commandlinetools-toc.md)
- [Tools for streaming installation](/build/core-features/common/packaging/deployment/atoc-deployment-tools.md)
- [Deployment package schema and streaming install tools](/build/core-features/common/packaging/deployment/index.md)
- [Make package (makepkg.exe)](/build/core-features/common/packaging/deployment/makepkg.md)
