如何用 makepkg 和 wdapp 打包 Windows GDK 游戏并本地安装
2026/9/15 17:41:31 网站建设 项目流程

如何用 makepkg 和 wdapp 打包 Windows GDK 游戏并本地安装

【免费下载链接】SDLSimple DirectMedia Layer项目地址: https://gitcode.com/GitHub_Trending/sd/SDL

SDL 的 Windows GDK 移植支持通过 Microsoft Game Development Kit 运行游戏。用Gaming.Desktop.x64平台构建的游戏可以直接在 Visual Studio 调试器中跑起来,但如果你希望像普通应用一样从开始菜单启动它,就需要把输出目录里的 .exe、配置和依赖打包成一个包,再在本地安装。SDL 文档docs/README-gdk.md给出了完整流程,本文聚焦其中的最后一步:用makepkg生成包、用wdapp本地安装,以及安装前后的必要准备与验证。

适用前提(文档明确列出):

  • Microsoft Visual Studio 2022(理论上 2019/2026 也可用,但文档说明未经验证)
  • Microsoft GDK April 2026 Update 3 或更新的公开版本
  • 游戏已经能针对Gaming.Desktop.x64配置构建并运行(Release 配置被推荐用于构建 SDL3)

打包前:确认 .exe 所在目录里的文件

GDK 要求下列文件与游戏的 .exe 位于同一目录。文档说明,缺少必要的 DLL 时游戏连调试器里都启动不了:

  • 你自己构建的SDL3.dll
  • Microsoft.Xbox.Services.C.Thunks.dll
  • XCurl.dll
  • libHttpClient.dll

此外还需要:

  • MicrosoftGame.config:可以用 testgdk 的配置文件 作为起点。文档要求至少修改其中的 Executable Name、DefaultDisplayName 和 Description 三个值。
  • 若干个 Logo PNG 文件:文档说明“即使从调试器启动,也需要这些 logo 才能启动游戏”。可以直接使用仓库中 VisualC-GDK/logos 提供的示例 logo。
  • 游戏所需的数据文件:调试 GDK 游戏时无法指定工作目录,所以数据文件必须复制到输出目录(通常用 post-build 步骤完成)。

MicrosoftGame.config示例(取自仓库中 testgdk 的 wingdk 版本,内容原文照录):

<?xml version="1.0" encoding="utf-8"?> <Game configVersion="1"> <!-- Set these to the correct identifiers from Partner Center --> <Identity Name="SDL" Version="1.0.0.0" Publisher="CN=Publisher"/> <ExecutableList> <Executable Name="testgdk.exe" TargetDeviceFamily="PC" Id="Game" /> </ExecutableList> <DesktopRegistration> <DependencyList> <KnownDependency Name="VC14"/> </DependencyList> </DesktopRegistration> <!-- Set these to the correct values from Partner Center --> <MSAAppId>PleaseChangeMe</MSAAppId> <TitleId>FFFFFFFF</TitleId> <ShellVisuals DefaultDisplayName="testgdk" PublisherDisplayName="SDL" Square480x480Logo="Logo480x480.png" Square150x150Logo="Logo150x150.png" Square44x44Logo="Logo44x44.png" Description="testgdk" ForegroundText="light" BackgroundColor="#000000" StoreLogo="Logo100x100.png"/> </Game>

关于其中的标识符:文档说明,仅做本地测试(不登录 Xbox Live)时,解决方案中 GDK 测试程序自带的 test identifiers 即可工作;只有要测试 Xbox Live 服务(如用户登录)或正式发布包,才需要到 Partner Center 创建 Game 应用,并把 Identity 的 Name/Publisher、TitleIdMSAAppId三项替换为 Partner Center 的值。

编写 PackageLayout.xml 描述包内容

PackageLayout.xml决定哪些文件进入包。可以直接从仓库里任一测试程序的示例起步,比如 testgdk 的 PackageLayout.xml:

<Package> <Chunk Id="1000" Marker="Launch"> <FileGroup DestinationPath="." SourcePath="." Include="testgdk.exe" /> <FileGroup DestinationPath="." SourcePath="." Include="MicrosoftGame.config" /> <FileGroup DestinationPath="." SourcePath="." Include="*.bmp" /> <FileGroup DestinationPath="." SourcePath="." Include="*.wav" /> <FileGroup DestinationPath="." SourcePath="." Include="*.png" /> <FileGroup DestinationPath="." SourcePath="." Include="*.dll" /> </Chunk> </Package>

这是仓库中的原文示例。套用时需要做两处修改:把Include="testgdk.exe"换成你自己游戏的 exe 文件名,并按需引用你的游戏数据文件。示例里SourcePath="."表示文件与 .exe 在同一个目录;如果数据文件不放在一起,也可以改为相对路径(文档说明相对路径是允许的),但把文件复制到输出目录是最省事的做法。

用 makepkg 生成包

所有打包命令都要在 GDK 提供的命令提示符中执行:

  1. 从 Windows 开始菜单打开 "Desktop VS 2022 Gaming Command Prompt"。
  2. cd进入包含PackageLayout.xml的目录。若布局文件按上面的示例使用本地路径(SourcePath="."),这个目录就是 .exe 的输出目录。
  3. 创建输出目录:mkdir Package
  4. 执行打包命令,把包生成到Package目录:
makepkg pack /f PackageLayout.xml /lt /d . /nogameos /pc /pd Package

其中/f指定布局文件PackageLayout.xml/pd Package指定包输出到Package目录;/lt /d . /nogameos /pc按文档原样保留即可。

用 wdapp 本地安装包

在同一个 Gaming Command Prompt 中执行:

wdapp install PACKAGENAME.msixvc

PACKAGENAME是占位符,替换为Package目录中生成的.msixvc文件的文件名(不含扩展名)。

验证:从开始菜单启动

文档给出的成功条件是:包安装成功后,你可以从 Windows 开始菜单运行这个游戏。如果启动失败,先回到上一节核对 .exe 同目录下的 DLL、config 和 logo 是否齐全。

可选:测试 Xbox Live 功能时切换沙箱

如果游戏要登录 Xbox Live(前提是MicrosoftGame.config里已有来自 Partner Center 的有效 TitleId 和 MSAAppId),在调试器运行和运行安装包两种情况下都需要先把机器切到该 title 的沙箱。仍然在 "Desktop VS 2022 Gaming Command Prompt" 中执行:

XblPCSandbox SANDBOX.#

其中SANDBOX.#是 Partner Center 中你的沙箱编号(这是文档中的写法)。测试完想切回零售沙箱:

XblPCSandbox RETAIL

常见安装报错

"The current user has already installed an unpackaged version of this app. A packaged version cannot replace this."

June 2022 之前的 GDK 中,从调试器运行仍会在本地注册一个应用(出现在开始菜单里)。解决办法是把这个未打包版本卸载掉——文档说明最简单的做法是在开始菜单里右键它并卸载。

Xbox Live 登录一直失败

文档要求:确认MicrosoftGame.config中的 TitleId 和 MSAAppId 已设置为有效值(测试程序 testgdk 同样受此限制),并确认 PC 处于正确的沙箱。

边界说明

  • 本文命令对应 Windows GDK(Gaming.Desktop.x64)。Xbox One/Series 目标走的是另一组命令(makepkg pack /f PackageLayout.xml /lt /d . /pd Packagexbapp install [PACKAGE].xvc),且需要 GDKX 授权,不在本文范围内。
  • GDK 移植只支持通过仓库自带的 Visual Studio 解决方案编译(VisualC-GDK/SDL.sln),文档明确说明不支持其他编译方式。
  • 基本的本地测试不需要 Partner Center 账号;只有测试 Xbox Live 或发布包时才需要。更完整的 Windows GDK 搭建步骤(新增Gaming.Desktop.x64配置、构建 SDL3、链接xgameruntime.lib等)见 docs/README-gdk.md。

【免费下载链接】SDLSimple DirectMedia Layer项目地址: https://gitcode.com/GitHub_Trending/sd/SDL

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询