> ## 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 用于检查、比较并从 XVC、MSIXVC 和 MSIXVC2 包文件中提取内容。

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

## 全局选项

| 选项         | 说明            |
| ---------- | ------------- |
| `/v`       | 启用向控制台输出详细信息。 |
| `/?`, `/h` | 显示帮助和用法信息。    |

## 命令

* [`info`](#info) - 显示包元数据。
* [`compare`](#compare) - 比较两个包并报告差异。
* [`license`](#license) - 显示签名密钥信息。
* [`osinfo`](#osinfo) - 显示 game OS 信息。
* [`chunkinfo`](#chunkinfo) - 显示 chunk 详细信息。
* [`fileinfo`](#fileinfo) - 显示文件详细信息。
* [`extract`](#extract) - 从包中提取文件。
* [`set`](#set) - 更改 PackageUtil 设置。

## info

提供包信息，包括版本号、ContentID、ProductID、GameOS 版本和加密密钥 ID。

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

### 参数

| 参数              | 说明         |
| --------------- | ---------- |
| `<packagefile>` | 指定要检查的包文件。 |

## compare

比较基础包与更新包，报告差异，包括更新大小和更改的段。

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

### 参数

| 参数                     | 说明            |
| ---------------------- | ------------- |
| `<basepackagefile>`    | 指定用于更新比较的基础包。 |
| `<updatedpackagefile>` | 指定用于比较的更新包。   |

### 选项

| 选项           | 说明           |
| ------------ | ------------ |
| `/quiet`     | 仅打印摘要信息。     |
| `/out <out>` | 指定比较报告的输出目录。 |

PackageUtil 会生成从基础包更新到更新包时所下载内容的 HTML 报告，其中包含估计的更新下载大小。

两个包都必须使用 `/lk` 加密或默认加密模式。请勿使用 `/l`，因为对于使用唯一内容许可证的包，比较结果不准确。

## license

显示包上所使用签名密钥的信息，也可用于检查 EKB 文件是否与包匹配。

该命令报告以下值之一：

* Submission signed (`/l`) - 仅用于提交到合作伙伴中心。
* Test signed (`/lt`) - 允许旁加载且未加密保护。

<Note>
  当前，`packageutil license` 会将 `/lk` 签名的包报告为 `/l` 签名的包。
</Note>

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

### 参数

| 参数              | 说明                                                       |
| --------------- | -------------------------------------------------------- |
| `<packagefile>` | 指定要检查的包文件。                                               |
| `<ekbfile>`     | 可选，指定要与包进行核对的 EKB 文件。在认证之前使用此检查，以确保你提供的 EKB 文件与要认证的包相对应。 |

## osinfo

提供 game OS 的相关信息，包括其 GUID 和四段版本号。

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

### 参数

| 参数         | 说明                 |
| ---------- | ------------------ |
| `<gameos>` | 指定要检查的 game OS 文件。 |

## chunkinfo

提供包中 chunk 的相关信息，包括 chunk ID、chunk 大小和 Intelligent Delivery 修饰符。

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

### 参数

| 参数              | 说明         |
| --------------- | ---------- |
| `<packagefile>` | 指定要检查的包文件。 |

## fileinfo

提供包中文件的相关信息，包括文件名、大小和段详细信息。

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

### 参数

| 参数              | 说明         |
| --------------- | ---------- |
| `<packagefile>` | 指定要检查的包文件。 |

## extract

从包中将一个或多个文件提取到输出目录。

<Note>
  Extract 仅支持 MSIXVC2 包。
</Note>

<Note>
  Extract 只能从未加密的包中提取。例如，无法从 XBOX CDN 上的包文件提取。
</Note>

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

### 选项

| 选项                   | 说明                    |
| -------------------- | --------------------- |
| `/package <package>` | 指定 MSIXVC2 包文件。       |
| `/file <file>`       | 指定要提取的单个文件。省略时提取全部文件。 |
| `/out <out>`         | **（必需）** 指定输出目录。      |

**用法示例：**

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

## set

更改 PackageUtil 设置。使用 `set msixvc2` 在当前设备上打开或关闭 MSIXVC2 开发者模式。

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

请从提升权限的命令提示符运行此命令。

## 面向中间件和自定义工具的 JSON 输出

运行 `compare` 时，PackageUtil 会在生成 HTML 报告的同时创建一个 JSON 伴随文件。中间件、引擎和自定义工具可利用此文件检查包布局、定位包二进制文件中的文件位置、验证对齐或提取结构信息，而无需解压包。

`fileinfo` 命令也会生成适合机器处理的结构化输出。

JSON 输出使用缩写字段名以保持文件较小。

| 缩写名 | 完整名称   | 说明             |
| --- | ------ | -------------- |
| `O` | Offset | 数据段在包文件中的字节偏移。 |
| `L` | Length | 数据段的字节长度。      |

## 相关主题

[MSIXVC2 打包概述](/build/core-features/common/packaging/overviews/packaging-msixvc2-overview)

[Make package (makepkg.exe)](/build/core-features/common/packaging/deployment/makepkg)

[针对 PC 的 MSIXVC2 入门](/build/core-features/common/packaging/overviews/packaging-getting-started-for-PC-msixvc2)


## Related topics

- [XBOX 环境工具与 API](/zh-CN/tools/tools-console/gc-xbox-tools-and-apis-toc.md)
- [PC 开发的命令行工具](/zh-CN/tools/tools-pc/commandlinetools/gr-commandlinetools-toc.md)
- [流式安装工具](/zh-CN/build/core-features/common/packaging/deployment/atoc-deployment-tools.md)
- [部署包架构与流式安装工具](/zh-CN/build/core-features/common/packaging/deployment/index.md)
- [Make package (makepkg.exe)](/zh-CN/build/core-features/common/packaging/deployment/makepkg.md)
