通过


使用 GitHub Actions 将应用更新发布到 Microsoft Store

注释

目前仅免费产品支持通过GitHub Action进行的应用更新操作。 未来版本将支持付费产品。

GitHub Actions使你能够为 Microsoft 应用商店应用实现可靠的 CI/CD 管道。 通过直接从代码存储库自动执行生成、测试和部署步骤,可确保对每个更改(无论是 bug 修复、功能更新还是元数据更改)进行验证并安全地发布到Microsoft存储。

若要了解如何为应用更新过程设置先决条件,请查看以下视频:

先决条件

  1. Partner Center 中注册为Windows应用开发人员。

  2. 确保您的合作伙伴中心帐户有一个关联的租户。 可以通过在合作伙伴中心关联现有的Microsoft Entra ID或在合作伙伴中心创建新的Microsoft Entra ID来实现此目的。

  3. Register Microsoft Entra ID 中的应用程序

  4. 接下来,在合作伙伴中心的“帐户设置”部分的“用户管理”页下的“Microsoft Entra应用程序”选项卡中,添加表示将用于访问合作伙伴中心帐户提交的应用或服务的Microsoft Entra ID应用程序。 确保为此应用程序分配“管理者”角色。

  5. 要更新的应用必须已发布并位于 Microsoft Store 中。

  6. 所需的 ID 和机密:

    • 租户 ID(这是您的 Microsoft Entra 租户的唯一标识符。转到 https://entra.microsoft.com/。进入 Azure Active Directory > 页面概述。复制“租户 ID”值。)
    • 客户端 ID (这是你创建的应用注册的应用程序 ID。在 Entra 管理中心,转到 Azure Active Directory > App registrations。选择已注册的应用。复制“应用程序 ID”。)用于 API 访问。 请在 Entra 管理中心,转到 Azure Active Directory 应用注册 >。 选择已注册的应用。 复制“应用程序 ID”。)
    • 客户端密码(这是为应用注册生成的类似密码的值,用于安全身份验证。在 Entra 管理中心,转到 Azure Active Directory > App registrations。选择已注册的应用,转到“证书”秘密。在“客户端机密”下,创建新的机密(如果尚未创建)。立即复制值,因为它不会再次显示)
    • 卖家 ID (这是Microsoft Partner Center中唯一的发布者/卖家标识符。登录到 Partner Center。转到帐户设置>开发人员设置或标识符。查找“发布者 ID”或“卖家 ID”。

    这些密钥将用作GitHub存储库中的机密。

设置GitHub Actions以更新 Microsoft Store 上的应用

如果项目已有GitHub存储库,则可以直接用于自动执行Microsoft 应用商店应用更新。

在您的 GitHub 存储库中,转到 Settings>Secrets 和 变量>Actions>New Repository Secret

显示如何将机密添加到存储库的屏幕截图。

添加以下机密:

  • AZURE_AD_APPLICATION_CLIENT_ID
  • AZURE_AD_APPLICATION_SECRET
  • AZURE_AD_TENANT_ID
  • SELLER_ID

可以通过 GitHub Actions 自动执行这两种类型应用(MSIX 和 MSI/EXE)的更新。 选择要更新的应用类型:

添加GitHub动作工作流以调用Microsoft GitHub动作(microsoft-store-apppublisher),用于发布包和应用元数据更新到商店。

若要了解如何使用GitHub Actions自动执行包和元数据更新,请查看以下视频:

包更新方面

在 .github/workflows/下,使用提供的工作流代码片段创建AppPackageAutoUpdate.yml:

name: AppPackageAutoUpdate 
 
on: 
  push: 
    paths: 
      - 'release/package.msix' 
 
jobs: 
  build: 
    runs-on: windows-latest 
 
    steps: 
      - name: Checkout repository 
        uses: actions/checkout@v4 
 
      - name: Configure Microsoft Store CLI 
        uses: microsoft/microsoft-store-apppublisher@v1.1 
 
      - name: Reconfigure store credentials 
        run: msstore reconfigure ` 
              --tenantId ${{ secrets.AZURE_AD_TENANT_ID }} ` 
              --sellerId ${{ secrets.SELLER_ID }} ` 
              --clientId ${{ secrets.AZURE_AD_APPLICATION_CLIENT_ID }} ` 
              --clientSecret ${{ secrets.AZURE_AD_APPLICATION_SECRET }} 
 
      - name: Publish App package 
        run: msstore publish '${{ github.workspace }}/release/package.msix' -id <Store product Id>

在发布文件夹中将 package.msix 更新为 CI/CD 流的一部分时,将自动触发AppPackageAutoUpdate.yml工作流。

对于元数据更新

首次发布元数据更新之前,请从合作伙伴中心获取应用提交的基本元数据 JSON。 这可确保从应用的正确结构开始。 因此,使用提供的代码片段在 .github/workflows/GetBaseMetadata.yml 下创建GitHub Actions工作流:

name: GetBaseMetadata 
 
on: 
  workflow_dispatch: 
 
jobs: 
  build: 
    runs-on: windows-latest 
 
    steps: 
    - uses: actions/checkout@v3 
 
    - uses: microsoft/microsoft-store-apppublisher@v1.1 
 
    - name: Configure MSStore CLI 
      run: | 
        msstore reconfigure ` 
          --tenantId ${{ secrets.AZURE_AD_TENANT_ID }} ` 
          --sellerId ${{ secrets.SELLER_ID }} ` 
          --clientId ${{ secrets.AZURE_AD_APPLICATION_CLIENT_ID }} ` 
          --clientSecret ${{ secrets.AZURE_AD_APPLICATION_SECRET }} 
 
    - name: Get base metadata  
      shell: pwsh 
      run: | 
        msstore submission get <Store product Id>

从GitHub存储库中的“作”选项卡运行此工作流。 选择相关的工作流,然后单击“运行工作流”。

显示用于获取 MSIX 应用基本元数据的工作流运行过程的屏幕截图。

完成后,工作流将在生成日志中获取应用的元数据。 复制该文件并在元数据文件夹中创建 metadata.json 文件。

现在,在 .github/workflows/下,使用提供的工作流代码片段创建AppMetadataAutoUpdate.yml:

name: AppMetadataAutoUpdate 
 
on: 
  push: 
    paths: 
      - 'metadata/metadata.json' 
 
jobs: 
  build: 
    runs-on: windows-latest 
 
    steps: 
      - name: Checkout repository 
        uses: actions/checkout@v4 
 
      - name: Configure Microsoft Store CLI 
        uses: microsoft/microsoft-store-apppublisher@v1.1 
 
      - name: Reconfigure store credentials 
        run: msstore reconfigure ` 
              --tenantId ${{ secrets.AZURE_AD_TENANT_ID }} ` 
              --sellerId ${{ secrets.SELLER_ID }} ` 
              --clientId ${{ secrets.AZURE_AD_APPLICATION_CLIENT_ID }} ` 
              --clientSecret ${{ secrets.AZURE_AD_APPLICATION_SECRET }} 
 
      - name: Update metadata 
        run: | 
          $metadata = Get-Content -Raw "${{ github.workspace }}/metadata/metadata.json" 
          msstore submission updateMetadata <Store product Id> $metadata
      - name: Publish to Store 
        run: msstore submission publish <Store product Id>

当 metadata.json 作为元数据文件夹中 CI/CD 流的一部分进行更新时,它将自动触发AppMetadataAutoUpdate.yml工作流。

上述工作流程将在后台执行以下任务:

  • 调用GitHub操作(microsoft-store-apppublisher)
  • 使用配置的机密(租户 ID、客户端 ID、客户端密码、卖家 ID)对Microsoft应用商店合作伙伴中心帐户进行身份验证。
  • 使用 Microsoft 应用商店开发人员 CLI (msstore) 获取基本元数据,并将更新的包或元数据发布到 Microsoft 应用商店。

有关命令的详细信息,请参阅Microsoft应用商店开发人员 CLI (MSIX)。

GitHub Actions工作流成功完成后,请检查微软商店,确认更改已经上线。 合作伙伴中心中的认证过程完成后,将显示更新。

我们相信本文档有助于显著提高Microsoft应用商店更新过程的效率和可靠性。 遵循这些最佳做法,可以简化应用发布并确保一致的高质量发布体验。