无法通过 API 更新 UWP 包航班提交
Can't update UWP package flight submission through API
我正在尝试通过 Package flight management API. I have followed this example 自动提交 UWP 包,我正在采取的步骤如下
- 使用可用的客户端凭据检索 API 访问令牌 in here
- Create or fetch flight 给航班名
- Create or fetch 指定航班内的提交
- 使用fileUploadUrl和blob客户端SDK上传包。在此步骤中,我都尝试使用
*.msixupload
并压缩 *.msixupload
文件并上传 zip 存档。
- 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 and updated my repo 中复制代码并稍作修改
IngestionClient.GetClientCredentialAccessToken
出于某种原因行不通,所以我用自己的实现替换了它
- 添加新包时,我指定了实际
*.msixbundle
的名称,而不是硬编码 package.appx
packages.Add(new
{
fileStatus = "PendingUpload",
fileName = Path.GetFileName(bundlePath),
});
这里的bundlePath
是到*.msixbundle
的物理路径
完成此操作后,我 运行 样本原样。不幸的是,效果是一样的——即使我将 *.msixbundle
上传到航班提交的 fileUploadUrl
,由于某种原因,合作伙伴中心不会检测到该包,一切都将保持不变。
令人沮丧的是,即使是官方示例也无法正常工作。此刻我完全卡住了。
我知道这个问题很老了,但也许它可以帮助遇到同样问题的人。
msixupload 包必须打包成 ZIP 文件。 ZIP 文件是要上传到 Azure Blob 存储的文件。
此处的错误信息表明合作伙伴中心正在寻找 .msixbundle,但您上传了 .msixupload 包.我很确定一旦使用 msixbundle 更新航班,您需要继续在该航班上运送捆绑包。尝试 运行 您在新创建的没有包裹的航班上的代码。如果这也不起作用,请生成 .msixbundle 并尝试上传它(打包在 ZIP 中)。
我正在尝试通过 Package flight management API. I have followed this example 自动提交 UWP 包,我正在采取的步骤如下
- 使用可用的客户端凭据检索 API 访问令牌 in here
- Create or fetch flight 给航班名
- Create or fetch 指定航班内的提交
- 使用fileUploadUrl和blob客户端SDK上传包。在此步骤中,我都尝试使用
*.msixupload
并压缩*.msixupload
文件并上传 zip 存档。 - 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 and updated my repo 中复制代码并稍作修改
IngestionClient.GetClientCredentialAccessToken
出于某种原因行不通,所以我用自己的实现替换了它- 添加新包时,我指定了实际
*.msixbundle
的名称,而不是硬编码
package.appx
packages.Add(new
{
fileStatus = "PendingUpload",
fileName = Path.GetFileName(bundlePath),
});
这里的bundlePath
是到*.msixbundle
完成此操作后,我 运行 样本原样。不幸的是,效果是一样的——即使我将 *.msixbundle
上传到航班提交的 fileUploadUrl
,由于某种原因,合作伙伴中心不会检测到该包,一切都将保持不变。
令人沮丧的是,即使是官方示例也无法正常工作。此刻我完全卡住了。
我知道这个问题很老了,但也许它可以帮助遇到同样问题的人。
msixupload 包必须打包成 ZIP 文件。 ZIP 文件是要上传到 Azure Blob 存储的文件。
此处的错误信息表明合作伙伴中心正在寻找 .msixbundle,但您上传了 .msixupload 包.我很确定一旦使用 msixbundle 更新航班,您需要继续在该航班上运送捆绑包。尝试 运行 您在新创建的没有包裹的航班上的代码。如果这也不起作用,请生成 .msixbundle 并尝试上传它(打包在 ZIP 中)。