分发 Windows 应用的一种便捷方式是 Microsoft Store。本指南将分步介绍如何以此方式打包和部署 Flutter 应用。

准备工作

#

在开始将 Flutter Windows 桌面应用发布到 Microsoft Store 之前,请先确认它符合 Microsoft Store 政策

此外,您必须加入 Microsoft Partner Network 才能提交应用。

在 Partner Center 中设置您的应用程序

#

Microsoft Partner Center 中管理应用程序的生命周期。

首先,保留应用程序名称,并确保拥有该名称的必需权限。名称保留后,应用程序将为各项服务(例如推送通知)进行配置,然后您就可以开始添加附加组件。

首次提交时必须同时配置定价、可用性、年龄分级和类别等选项,并且这些选项将在后续提交中自动保留。

打包和部署

#

要将应用程序发布到 Microsoft Store,您必须先对其进行打包。有效的格式为 .msix.msixbundle.msixupload.appx.appxbundle.appxupload.xap

Microsoft Store 的手动打包和部署

#

有关打包 Flutter Windows 桌面应用程序的更多信息,请参阅 MSIX 打包

请注意,每个产品都有一个唯一的标识符,由 Store 分配。

如果包是手动构建的,您必须在打包过程中手动包含其标识信息。可以通过以下说明从 Partner Center 检索必要的信息。

  1. 在 Partner Center 中,导航到您的应用程序。
  2. 选择 产品管理
  3. 通过点击 产品标识 来检索包标识名称、发布者和发布者显示名称。

手动打包应用程序后,手动将其提交到 Microsoft Partner Center。您可以通过创建新的提交、导航到 Packages 并上传创建的应用程序包来完成此操作。

持续部署

#

除了手动创建和部署包之外,在首次将应用程序提交到 Microsoft Store 后,您还可以使用 CI/CD 工具自动完成构建、打包、版本控制和部署过程。

Codemagic CI/CD

#

Codemagic CI/CD 使用 msix pub 包来打包 Flutter Windows 桌面应用程序。

对于 Flutter 应用程序,请使用 Codemagic Workflow Editorcodemagic.yaml 来打包应用程序并将其部署到 Microsoft Partner Center。可以使用此包配置其他选项(例如包中包含的功能列表和语言资源)。

Codemagic 使用 Partner Center 提交 API 进行发布;因此,Codemagic 需要 关联 Azure Active Directory 和 Partner Center 帐户

GitHub Actions CI/CD

#

GitHub Actions 可以使用 Microsoft Dev Store CLI 将应用程序打包成 MSIX 并发布到 Microsoft Store。 setup-msstore-cli GitHub Action 会安装该 CLI,以便 Action 可以使用它进行打包和发布。

由于打包 MSIX 使用 msix pub 包,因此项目的 pubspec.yaml 文件必须包含适当的 msix_config 节点。

您必须使用 全局管理员权限在 Dev Center 中创建一个 Azure AD 目录。

GitHub Action 需要来自 partner center 的环境 Secrets。AZURE_AD_TENANT_IDAZURE_AD_CLIENT_IDAZURE_AD_CLIENT_SECRET 可在 Dev Center 中查看,具体请遵循 Windows Store Publish Action 的说明。您还需要 SELLER_ID Secret,该 Secret 可以在 Dev Center 的 Account Settings > Organization Profile > Legal Info 下找到。

应用程序必须已存在于 Microsoft Dev Center 中,并至少有一个完整的提交,并且在 Action 执行之前必须在存储库中运行一次 msstore init。完成后,在 GitHub Action 中运行 msstore package .msstore publish 会将应用程序打包成 MSIX 并上传到 Dev Center 的新提交中。

MSIX 发布所需的步骤与以下类似:

yaml
- uses: microsoft/setup-msstore-cli@v1

- name: Configure the Microsoft Store CLI
  run: msstore reconfigure --tenantId $ --clientId $ --clientSecret $ --sellerId $

- name: Install Dart dependencies
  run: flutter pub get

- name: Create MSIX package
  run: msstore package .

- name: Publish MSIX to the Microsoft Store
  run: msstore publish -v

更新应用的程序版本号

#

对于发布到 Microsoft Store 的应用程序,必须在打包过程中设置版本号。

应用的默认版本号为 1.0.0.0

对于未发布到 Microsoft Store 的应用程序,您可以设置应用程序可执行文件的文件版本和产品版本。可执行文件的默认文件版本为 1.0.0.1,其默认产品版本为 1.0.0+1。要更新这些,请导航到 pubspec.yaml 文件并更新以下行:

yaml
version: 1.0.0+1

构建名称是三个用点分隔的数字,后面可以跟一个用 + 分隔的可选构建号。在上面的示例中,构建名称是 1.0.0,构建号是 1

构建名称将成为文件版本和产品版本的前三个数字,而构建号将成为文件版本和产品版本的第四个数字。

可以通过指定 --build-name--build-number 分别在 flutter build windows 中覆盖构建名称和构建号。

添加应用图标

#

在打包之前更新 Flutter Windows 桌面应用程序的图标,请使用以下说明:

  1. 在 Flutter 项目中,导航到 windows\runner\resources
  2. app_icon.ico 替换为您想要的图标。
  3. 如果图标的名称不是 app_icon.ico,请继续更改 windows\runner\Runner.rc 文件中的 IDI_APP_ICON 值,使其指向新路径。

使用 msix pub 包进行打包时,也可以在 pubspec.yaml 文件中配置 logo 路径。

要更新 Store 列表中的应用程序图片,请导航到提交的 Store 列表步骤,然后选择 Store logos。在那里,您可以上传 300 x 300 像素的 logo。

所有上传的图片都将保留供后续提交使用。

验证应用程序包

#

在发布到 Microsoft Store 之前,请先在本地验证应用程序包。

Windows App Certification Kit 是 Windows 软件开发工具包 (SDK) 中包含的一个工具。

验证应用程序

  1. 启动 Windows App Cert Kit。
  2. 选择 Flutter Windows 桌面包(.msix.msixbundle 等)。
  3. 选择测试报告的目标位置。

即使认证通过,报告也可能包含重要的警告和信息。