无法通过 API 更新 UWP 包航班提交
Posted
技术标签:
【中文标题】无法通过 API 更新 UWP 包航班提交【英文标题】:Can't update UWP package flight submission through API 【发布时间】:2021-06-30 01:49:21 【问题描述】:我正在尝试通过Package flight management API 自动提交 UWP 包。我已关注this example,我正在采取的步骤如下
-
使用可用的客户端凭据检索 API 访问令牌,如 in here 所述
Create 或 fetch 航班提供航班名称
Create 或 fetch 给定航班内的提交
使用fileUploadUrl 和blob 客户端SDK 上传包。在这一步中,我都尝试使用
*.msixupload
和压缩*.msixupload
文件并改为上传压缩存档。
Update航班提交指定要使用的包名。在这里,我使用带有以下正文的 PUT
请求。
"flightPackages": [
"fileName": "MY_APP.msixupload",
"fileStatus": "PendingUpload",
"minimumDirectXVersion": "None",
"minimumSystemRam": "None"
]
我还尝试指定MY_APP.msixbundle
,它是*.msixupload
包中的一个文件。
7. 提交航班提交
完成所有这些步骤后,提交失败并出现以下错误
"errors": [
"code": "InvalidParameterValue",
"details": "File 'MY_APP_0.63.0.0_x86_x64_arm_bundle.msixbundle' not found in archive."
],
我认为问题在于我上传包的方式和我使用的文件类型。在我提到的the example 中,您会发现在 blob 上传的步骤中,他们实际上上传了一个带有以下注释的 zip 存档:
// Upload the zip archive with all new files to the SAS URL returned with the submission.
此外,当他们更新航班提交时,他们使用以下对象
new
fileStatus = "PendingUpload",
fileName = "package.appx",
我在任何地方都找不到的第一个不明显的事情是 API 期望什么样的 ZIP 存档?应该是什么结构?我可以将哪些类型的文件放入存档中?
第二个问题是 *.appx
不再是 UWP 使用的包格式,而是 *.msix
。
那么,我做错了什么?
Here你可以找到完整的代码。
更新 1
在玩了很多我的代码并试图了解它有什么问题之后,我决定从official Microsoft sample guide 复制代码并用示例代码更新my repo 并稍作修改
IngestionClient.GetClientCredentialAccessToken
出于某种原因无法正常工作,因此我已将其替换为我自己的实现
添加新包时,我指定了实际*.msixbundle
的名称,而不是硬编码package.appx
packages.Add(new
fileStatus = "PendingUpload",
fileName = Path.GetFileName(bundlePath),
);
这里的bundlePath
是到*.msixbundle
的物理路径
完成此操作后,我按原样运行示例。不幸的是,效果是一样的——即使我将*.msixbundle
上传到航班提交的fileUploadUrl
,由于某种原因,合作伙伴中心不会检测到该包裹,一切都将保持不变。
意识到即使是官方样本也不起作用,这真是令人沮丧。目前我完全陷入困境。
【问题讨论】:
尝试手动上传而不是使用 API。 手动上传按预期工作 那就用手动上传吧 正如我在问题中提到的,我们正在尝试自动化完整的发布管道,这个命令行实用程序将成为更大的 CI/CD 构建发布管道的一部分。因此,手动上传不是一种选择。 【参考方案1】:我知道这个问题很老了,但也许它可以帮助遇到同样问题的人。
msixupload 包必须打包到 ZIP 文件中。 ZIP 文件是要上传到 Azure Blob 存储的文件。
此处的错误消息表明合作伙伴中心正在寻找 .msixbundle,但您上传了 .msixupload 包。我很确定一旦使用 msixbundle 更新了航班,您需要继续在该航班上运送捆绑包。尝试在没有包的新创建的航班上运行您的代码。如果这也不起作用,请生成 .msixbundle 并尝试上传(打包在 ZIP 中)。
【讨论】:
你是救生员。本质上,我将 *.msixbundle 打包成一个 zip,将其上传到文件上传 url,并将 zip 存档中的文件名指定为新包,一切正常!以上是关于无法通过 API 更新 UWP 包航班提交的主要内容,如果未能解决你的问题,请参考以下文章
VS2017 无法构建 UWP Store 包(.NET Native,ARM 构建中的错误)
为啥我在 Windows 10 UWP 上收到“无法注册包”部署错误?