Skip to main content
如果你的应用一直依赖某些以框架包形式在 Microsoft Store 中提供的可再发行软件,那么你无需链式安装该可再发行组件,而可以直接声明对该框架包的依赖。但是,如果 Microsoft Store 没有为你所依赖的可再发行组件提供框架包,请不要使用此方式,而应考虑使用自定义安装操作。

详细信息

  • 按正常方式开发你的应用,引用所需可再发行组件的导出库。
  • 无需将所依赖的可再发行组件与应用打包在一起,而是在清单中声明对相关框架包的依赖。
  • 当用户从 Microsoft Store 安装你的应用时,系统会检测该依赖,并确保该框架包对应用可用。 如果框架包已经安装在用户的设备上,则不需要进一步操作。否则,Microsoft Store 会在继续安装引用该框架包的应用之前,先触发该框架包的安装。
  • x86 版本的应用使用 x86 版本的框架包,x64 版本的应用使用 x64 版本的框架包。你无需为指定架构做任何事情,平台会为你处理。

DirectX 运行时

此框架包提供来自旧版 DirectX SDK 的多个并存(side-by-side)的可选组件。如果你的应用使用了已弃用的 Direct3D 实用库 D3DX9、D3DX10 或 D3DX11,或者 XAudio 2.7、XInput 1.3 或 XACT,那么可以使用此包为你打包的 Win32 桌面应用部署这些已弃用的 DLL。有关这些组件的更多背景,请参见 此博客文章
使用 DirectX 的绝大多数游戏 并不 真正需要这个“旧版 DirectX SDK”框架包依赖。
或者,你可以更新应用以移除对 旧版 DirectX SDK 的依赖。
  • 对于 XAudio2,最佳选择是使用 Windows 10 SDK 中的头文件升级到 XAudio 2.9。在 Windows 10 中,XAudio 2.9、X3DAudio 和 XAPOFX 都已内置于操作系统中。对于你的非 Store 版本,可以使用 XAudio2Redist,它提供了一个简单的应用本地可再发行组件,支持在 Windows 7 SP1 或更高版本上使用 XAudio2.9。这既简化了部署,又解决了旧版 XAudio 2.7 的许多已知 Bug。请参见 Microsoft Docs
  • 对于 XInput,最佳选择是使用 Windows 10 SDK 中的头文件使用 XInput 1.4。在 Windows 10 中,XInput 1.4 已内置于操作系统中。对于你的非 Store 版本,可以使用 XInput 9.1.0,它一路向下兼容至 Windows Vista,内置于操作系统中。请参见 此博客文章
强烈不建议使用旧版 XInput 1.3,因为它存在已知的安全问题。框架包中的版本已更新以缓解此问题并升级到 SHA-256 代码签名,但原始的旧版 DirectX End-User Runtime 包未做更改。
  • 对于 Direct3D 10(d3dx10),最佳选择是升级到 Direct3D 11。请参见 Microsoft Docs
  • 对于 Direct3D 11(d3dx11),关于替代旧版 D3DX for Direct3D 11 的各种方案,请参见 此博客文章
对于较旧的游戏,你还可以考虑使用 Microsoft.DXSDK.D3DX NuGet 包,它提供了 D3DX9、D3DX10 和 D3DX11 的 2010 年 6 月版本,并采用并存许可证。这些可再发行 DLL 同样使用 SHA-256 代码签名。
  • 对于 HLSL 编译器(D3DCompiler),你可以使用 Windows 10 SDK 中的最新版本。在 Windows 10 中,它内置于操作系统中。对于你的非 Store 版本,可以将 D3DCompiler_47.dll 作为简单的应用本地文件与游戏一起包含。请参见 此博客文章
此框架包和旧版 DirectX End-User Redistributable 均不会以任何方式修改 DirectX 运行时。
MicrosoftGame.config 示例片段:
有两种方法可将 DirectX 框架包安装到开发或测试机器上。
  1. 从 Microsoft Downloads 站点下载,双击 Appx 文件安装(推荐)。DirectX x86 框架包,DirectX x64 框架包
  2. 在“运行”应用中输入以下链接,以获取一个安装 DirectX 框架依赖包的 DirectX 示例应用。(注意:这仅适用于位于 RETAIL 开发沙箱中的机器,并且只会在 x64 平台的机器上安装 x64 平台版本):ms-windows-store://pdp/?productid=9MTF6XHMN17Z
DirectX 框架包不会将这些 DLL 安装到 System32 文件夹中。它们位于你已打包应用运行时的搜索路径中。如果你在使用显式链接,请不要使用 LoadLibraryExLOAD_LIBRARY_SEARCH_SYSTEM32LOAD_LIBRARY_SEARCH_APPLICATION_DIR 标志来加载这些旧版 DirectX 库。
此框架包的 9.29.1974.0 版本包括 SHA-256 代码签名的载荷 DLL,以及针对 XInput 1.3 的安全修复。

Visual Studio C++ 运行时

对于 C/C++ 运行时这一特殊情况,传统的可再发行形式和框架包形式并不总是完全相同。传统的非 Microsoft Store 应用一直使用传统的可再发行形式。 上文提到的安装程序会将必要的框架包放置在以下 Extension SDKs 文件夹中: %PROGRAMFILES(X86)%\Microsoft SDKs\Windows Kits\10\ExtensionSDKs 请确保侧载与你的应用架构相对应的版本:x86 或 x64。 要在本地测试你的包及其框架依赖项,请确定你的应用是使用哪个版本的 Visual Studio 构建的,侧载对应的 APPX 框架包,然后注册你的应用。 有关详细信息,请参见 Microsoft Docs

Visual Studio 2012

以下是 Visual Studio 2012 VCLibs 框架包 v11 的清单示例条目。
要侧载此框架包
  • x86:
    1. 定位框架包: C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.110\14.0\Appx\Retail\x86\Microsoft.VCLibs.x86.11.00.Desktop.appx
    2. 双击安装,或运行以下 Windows PowerShell 命令: add-appxpackage "C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.110\14.0\Appx\Retail\x86\Microsoft.VCLibs.x86.11.00.Desktop.appx"
  • x64:
    1. 定位框架包: C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.110\14.0\Appx\Retail\x64\Microsoft.VCLibs.x64.11.00.Desktop.appx
    2. 双击安装,或运行以下 Windows PowerShell 命令: add-appxpackage "C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.110\14.0\Appx\Retail\x64\Microsoft.VCLibs.x64.11.00.Desktop.appx"

Visual Studio 2013

以下是 Visual Studio 2012 VCLibs 框架包 v12 的清单示例条目。
要侧载此框架包
  • x86:
    1. 定位框架包: C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.120\14.0\Appx\Retail\x86\Microsoft.VCLibs.x86.12.00.Desktop.appx
    2. 双击安装,或运行以下 Windows PowerShell 命令: add-appxpackage "C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.110\14.0\Appx\Retail\x86\Microsoft.VCLibs.x86.11.00.Desktop.appx"
  • x64:
    1. 定位框架包: C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.120\14.0\Appx\Retail\x64\Microsoft.VCLibs.x64.12.00.Desktop.appx
    2. 双击安装,或运行以下 Windows PowerShell 命令: add-appxpackage "C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop.120\14.0\Appx\Retail\x64\Microsoft.VCLibs.x64.12.00.Desktop.appx"

Visual Studio 2015 - 2022

以下是 Visual Studio 2015 或更高版本 VCLibs 框架包 v14 的清单示例条目。
要侧载此框架包
  • x86:
    1. 定位框架包: C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop\14.0\Appx\Retail\x86\Microsoft.VCLibs.x86.14.00.Desktop.appx
    2. 双击安装,或运行以下 Windows PowerShell 命令: add-appxpackage "C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop\14.0\Appx\Retail\x86\Microsoft.VCLibs.x86.14.00.Desktop.appx"
  • x64:
    1. 定位框架包: C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop\14.0\Appx\Retail\x64\Microsoft.VCLibs.x64.14.00.Desktop.appx
    2. 双击安装,或运行以下 Windows PowerShell 命令: add-appxpackage "C:\Program Files (x86)\Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.VCLibs.Desktop\14.0\Appx\Retail\x64\Microsoft.VCLibs.x64.14.00.Desktop.appx"
请记住,VS 2015 Update 3、VS 2017、VS 2019 和 VS 2022 都使用同一个 REDIST,其中 VS 2022 是最新的。有关详细信息,请参见 Microsoft Docs

本地测试

在包含对相应清单的引用并侧载了 APPX 框架包后,使用以下命令安装应用的松散构建版本: WdApp.exe register loose_build_path 这将确保你的应用被安装并引用正确的框架。现在从“开始”菜单的磁贴运行你的应用,然后针对你的应用执行必要的测试和验证步骤。 在完成侧载配置下的测试后,使用 使用 MSIXVC 打包工具在 PC 上打包游戏入门 主题中的说明创建 MSIXVC 包。 有关更多详细信息,请参见博客文章 Using Visual C++ Runtime in Centennial project
最后修改于 2026年8月13日