如何将WinUI3的MSIX Bundle发布至微软商店并解决上传报错
问题
将UWP应用迁移至WinUI3后,上传微软商店时遭遇以下问题:
- 上传.msix包时,页面提示因此前已上传过.msixupload或.msixbundle,仅允许上传该类包
- Visual Studio应用包向导仅生成.msix包,无法产出可用于商店上传的.msixupload或.msixbundle
- 参考官方文档手动制作.msixbundle后,上传报错:
[包名及版本].0.msixbundle的包文件格式无效: Exception from HRESULT: 0x80510007
项目.csproj核心配置如下:
<PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework> <TargetPlatformMinVersion>10.0.18362.0</TargetPlatformMinVersion> <ApplicationManifest>app.manifest</ApplicationManifest> <Platforms>x86;x64;arm64</Platforms> <RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers> <PublishProfile>win10-$(Platform).pubxml</PublishProfile> <UseWinUI>true</UseWinUI> <EnableMsixTooling>true</EnableMsixTooling> <GenerateTemporaryStoreCertificate>True</GenerateTemporaryStoreCertificate> <DefaultLanguage>en-us</DefaultLanguage> <AppxAutoIncrementPackageRevision>True</AppxAutoIncrementPackageRevision> <AppxBundle>Always</AppxBundle> <AppxBundlePlatforms>x86|x64</AppxBundlePlatforms> <AssemblyName>[App name]</AssemblyName> <UseAppLocalCoreFramework>true</UseAppLocalCoreFramework> <HoursBetweenUpdateChecks>1</HoursBetweenUpdateChecks> <AppxPackageSigningTimestampDigestAlgorithm>SHA256</AppxPackageSigningTimestampDigestAlgorithm> <GenerateAppInstallerFile>False</GenerateAppInstallerFile> <AppxSymbolPackageEnabled>True</AppxSymbolPackageEnabled> <GenerateTestArtifacts>True</GenerateTestArtifacts> <AppxPackageDir>[path]\App\AppPackages\</AppxPackageDir> </PropertyGroup>
解决方案
1. 让Visual Studio自动生成合规的.msixbundle/.msixupload
- 检查发布配置文件:项目指定了
<PublishProfile>win10-$(Platform).pubxml</PublishProfile>,每个平台的.pubxml可能覆盖全局打包设置。打开对应平台的发布配置文件,确保未设置<AppxBundle>Never</AppxBundle>,若存在则改为<AppxBundle>Always</AppxBundle>,并添加<AppxBundlePlatforms>x86|x64</AppxBundlePlatforms>。 - 使用正确的应用包创建流程:右键项目→发布→创建应用包,选择微软商店作为目标并登录开发者账号,勾选要打包的平台(x86、x64)及**生成应用包上传文件(.msixupload)**选项,完成向导后即可在输出目录获取包含.msixbundle的.msixupload压缩包,直接上传该文件即可。
- 调整全局.csproj配置:移除
<PublishProfile>win10-$(Platform).pubxml</PublishProfile>以避免平台配置覆盖全局规则;确保<AppxBundle>Always</AppxBundle>和<AppxBundlePlatforms>(按需设置x86|x64|arm64)配置正确。
2. 修复手动打包.msixbundle的0x80510007报错
该错误通常源于包签名或bundle结构不符合商店要求:
- 使用商店发布证书签名:手动打包前,必须用从微软商店获取的发布证书为所有.msix包签名,禁止使用临时测试证书。
- 确保包版本一致性:.msixbundle内的所有.msix包必须拥有完全一致的包名称、版本号和发布者信息,不能存在版本差异。
- 使用官方工具打包:借助Windows SDK中的
MakeAppx.exe(路径示例:C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64)执行打包命令,保证格式合规:MakeAppx.exe bundle /d "存放各平台msix包的目录" /p "输出的.msixbundle路径"
3. WinUI3项目示例参考
直接使用Visual Studio创建打包的WinUI 3桌面应用模板项目,该模板默认配置了正确的打包参数,可直接通过"创建应用包"向导生成符合商店要求的.msixupload文件。对比默认项目的.csproj配置,检查自身项目是否缺失关键设置(如<PackageCertificateKeyFile>指定商店证书)。
内容的提问来源于stack exchange,提问作者Siyh
相关产品推荐
相关产品推荐

