Visual C++ 2022、Microsoft Store 和 MSIX 清单问题

Visual C++ 2022, Microsoft Store and MSIX manifest question

嗨!

有人能回答我的问题吗? 我有一个链接到 C++ DLL 运行时的 Visual C++ 应用程序。 它由 MSIX 打包工具转换为 Microsoft Store 应用程序。 问题是关于 MSIX 清单的: XML 的这个片段是否适用于 Windows SDK 10.0.19041.0 和 VC+ 2022?

<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.19041.0" MaxVersionTested="10.0.22000.376" />
<PackageDependency Name="Microsoft.VCLibs.140.00.UWPDesktop" MinVersion="14.0.30035.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />

非常感谢您的支持。

<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.19041.0" MaxVersionTested="10.0.22000.376" />

TargetDeviceFamily 告诉 AppInstaller 运行time 您测试应用程序的最低版本是 10.0.19041,即 2020 年 5 月更新 (2004 / 20H1)。它不直接连接到您编译时使用的 SDK(因为您可以针对更新的 SDK,但要小心避免调用更新的 API,除非它们可用)。

<PackageDependency Name="Microsoft.VCLibs.140.00.UWPDesktop" MinVersion="14.0.30035.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />

PackageDependency 更难找到信息,因为版本号似乎没有在任何地方列出(并且与 Visual Studio 2022 C++ 运行time 版本不匹配14.31.31103.0)。但是,我找到了 the following page,它描述了“Side-loading 的通用 Windows 应用程序”并列出了 [Program Files (x86)]\Microsoft SDKs\Windows Kits\ExtensionSDKs\Microsoft.VCLibs.Desktop.0\Appx\Retail\。环顾这些目录,我可以看到以下文件:

C:\Program Files (x86)\Microsoft SDKs\Windows Kits\ExtensionSDKs\Microsoft.VCLibs.Desktop.0\SDKManifest.xml

文件包含以下内容:

<FileList TargetPlatform="UAP" 
  FrameworkIdentity-Debug = "Name = Microsoft.VCLibs.140.00.Debug.UWPDesktop, MinVersion = 14.0.30035.0, Publisher = 'CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US'" 
  FrameworkIdentity-Retail = "Name = Microsoft.VCLibs.140.00.UWPDesktop, MinVersion = 14.0.30035.0, Publisher = 'CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US'" 
  MinVSVersion = "14.0" 
  TargetPlatformMinVersion="10.0.0.0" 
  TargetPlatformVersion="10.0.0.0" 
  DisplayName = "Visual C++ 2015-2019 UWP Desktop Runtime for native apps" 
  AppliesTo = "WindowsAppContainer + (Managed | Javascript | Native)" 
  AppX-Debug-ARM = ".\AppX\Debug\ARM\Microsoft.VCLibs.ARM.Debug.14.00.Desktop.appx" 
  AppX-Debug-ARM64 = ".\AppX\Debug\ARM64\Microsoft.VCLibs.ARM64.Debug.14.00.Desktop.appx" 
  AppX-Debug-x86 = ".\AppX\Debug\x86\Microsoft.VCLibs.x86.Debug.14.00.Desktop.appx" 
  AppX-Debug-x64 = ".\AppX\Debug\x64\Microsoft.VCLibs.x64.Debug.14.00.Desktop.appx" 
  AppX-Retail-ARM = ".\AppX\Retail\ARM\Microsoft.VCLibs.ARM.14.00.Desktop.appx" 
  AppX-Retail-ARM64 = ".\AppX\Retail\ARM64\Microsoft.VCLibs.ARM64.14.00.Desktop.appx" 
  AppX-Retail-x86 = ".\AppX\Retail\x86\Microsoft.VCLibs.x86.14.00.Desktop.appx" 
  AppX-Retail-x64 = ".\AppX\Retail\x64\Microsoft.VCLibs.x64.14.00.Desktop.appx" 
  SupportsMultipleVersions="Error" 
  SupportedArchitectures="x86;x64;ARM;ARM64"> 
 </FileList> 

如您所见,它提到了14.0.30035.0。我安装了 Visual Studio 2022(连同 Visual Studio 2019)所以我要假设 14.0.30035.0 与最新版本相关。

附加: 也许不是最好的假设,使用 PowerShell 我可以看到当前安装的版本:

Get-AppxPackage -Name "*VCLib*" | Select-Object -Property Name, Version, Architecture | Where-Object {$_.Architecture -eq 'X64'}

Name                                     Version      Architecture
----                                     -------      ------------
Microsoft.VCLibs.140.00                  14.0.27810.0          X64
Microsoft.VCLibs.140.00                  14.0.29231.0          X64
Microsoft.VCLibs.140.00.Debug.UWPDesktop 14.0.29231.0          X64
Microsoft.VCLibs.140.00.Debug            14.0.29231.0          X64
Microsoft.VCLibs.140.00                  14.0.30035.0          X64
Microsoft.VCLibs.140.00.UWPDesktop       14.0.30035.0          X64
Microsoft.VCLibs.140.00                  14.0.30704.0          X64
Microsoft.VCLibs.140.00.UWPDesktop       14.0.30704.0          X64

如你所见,我机器上实际安装的最高版本号是14.0.30704.0

进一步: 我做了一些实验,发现使用 Visual Studio 2022 构建应用程序,并将其打包为依赖于 14.0.30035.0 的 MSIX 将运行 Windows 10 2004(2020 年 5 月)的全新安装。所以我认为 14.0.30035.0 是 Visual Studio 2022 年的正确 运行 时间。