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 年的正确 运行 时间。
嗨!
有人能回答我的问题吗? 我有一个链接到 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 年的正确 运行 时间。