如何用 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.dllXCurl.dlllibHttpClient.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、TitleId、MSAAppId三项替换为 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 提供的命令提示符中执行:
- 从 Windows 开始菜单打开 "Desktop VS 2022 Gaming Command Prompt"。
- 用
cd进入包含PackageLayout.xml的目录。若布局文件按上面的示例使用本地路径(SourcePath="."),这个目录就是 .exe 的输出目录。 - 创建输出目录:
mkdir Package。 - 执行打包命令,把包生成到
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.msixvcPACKAGENAME是占位符,替换为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 Package和xbapp 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),仅供参考