微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法通过 API 更新 UWP 包飞行提交

如何解决无法通过 API 更新 UWP 包飞行提交

我正在尝试通过 Package flight management API 自动提交 UWP 包。我已遵循 this example,我正在采取的步骤如下

  1. 使用可用的客户端凭据检索 API 访问令牌,如in here
  2. Createfetch 航班给出航班名称
  3. Createfetch 给定航班内的提交
  4. 使用 fileUploadUrl 和 blob 客户端 SDK 上传包。在这一步中,我尝试使用 *.msixupload 并压缩 *.msixupload 文件上传 zip 存档。
  5. 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

  1. IngestionClient.GetClientCredentialAccesstoken 由于某种原因不起作用,所以我用我自己的实现替换了它
  2. 添加新包时,我指定了实际 package.appx名称而不是硬编码的 *.msixbundle
packages.Add(new
{
    fileStatus = "PendingUpload",fileName = Path.GetFileName(bundlePath),});

这里的 bundlePath 是到 *.msixbundle 的物理路径

完成此操作后,我按原样运行了示例。不幸的是,效果是一样的 - 即使我将 *.msixbundle 上传到航班提交的 fileUploadUrl,但出于某种原因,合作伙伴中心不会检测到该包裹,一切都将保持不变。

令人沮丧的是,即使是官方样本也不起作用。此刻我完全被困住了。

解决方法

我知道这个问题很老了,但也许它可以帮助有同样问题的人。

  • msixupload 包必须打包成 ZIP 文件。 ZIP 文件是要上传到 Azure Blob 存储的文件。

  • 此处的错误消息表明合作伙伴中心正在寻找 .msixbundle,但您上传了 .msixupload 包。我很确定一旦使用 msixbundle 更新航班,您需要继续在该航班上运送捆绑包。尝试在没有包的新创建的航班上运行您的代码。如果这也不起作用,请生成 .msixbundle 并尝试上传(打包在 ZIP 中)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。