构建和发布 Windows 桌面应用

分发 Windows 应用的一种便捷方法是 Microsoft Store。本指南分步介绍了如何通过这种方式打包和部署 Flutter 应用。

准备工作

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

此外,您必须加入 Microsoft 合作伙伴网络 才能提交应用。

在合作伙伴中心设置应用

Microsoft 合作伙伴中心 中管理应用的生命周期。

首先,预留应用名称并确保对该名称拥有所需权限。预留名称后,将为该应用预配服务(例如推送通知),您就可以开始添加附加组件。

定价、可用性、年龄分级和类别等选项必须与首次提交一起配置,并且会自动保留以供后续提交使用。

打包和部署

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

Microsoft Store 的手动打包和部署

查看 MSIX 打包 以了解如何打包 Flutter Windows 桌面应用程序。

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

如果手动构建包,则必须在打包期间手动包含其标识详细信息。可以使用以下说明从合作伙伴中心检索基本信息

  1. 在合作伙伴中心,导航到应用程序。
  2. 选择产品管理
  3. 通过单击产品标识检索包标识名称、发布者和发布者显示名称。

手动打包应用程序后,手动将其提交到 Microsoft 合作伙伴中心。您可以通过创建新提交、导航到并上传创建的应用程序包来执行此操作。

持续部署

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

Codemagic CI/CD

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

对于 Flutter 应用程序,使用 Codemagic 工作流编辑器codemagic.yaml 来打包应用程序并将其部署到 Microsoft 合作伙伴中心。可以使用此包配置其他选项(例如包中包含的功能和语言资源列表)。

对于发布,Codemagic 使用 合作伙伴中心提交 API;因此,Codemagic 需要 关联 Azure Active Directory 和合作伙伴中心帐户

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 节点。

您必须从开发中心创建具有 全局管理员权限 的 Azure AD 目录。

GitHub Action 需要合作伙伴中心的环​​境秘密。 AZURE_AD_TENANT_IDAZURE_AD_ClIENT_IDAZURE_AD_CLIENT_SECRET 按照 Windows Store 发布操作 的说明在开发中心可见。您还需要 SELLER_ID 秘密,可以在开发中心的帐户设置 > 组织简介 > 法律信息中找到。

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

MSIX 发布所需步骤如下

- 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 文件并更新以下行

version: 1.0.0+1

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

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

生成名称和生成号都可以在 flutter build windows 中通过分别指定 --build-name--build-number 来覆盖。

添加应用图标

要在打包前更新 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 文件中配置徽标路径。

要更新应用商店列表中的应用程序图片,请导航到提交的应用商店列表步骤,然后选择应用商店徽标。在那里,你可以上传大小为 300 x 300 像素的徽标。

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

验证应用程序包

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

Windows 应用认证工具包是 Windows 软件开发工具包 (SDK) 中包含的一个工具。

要验证应用程序

  1. 启动 Windows 应用认证工具包。
  2. 选择 Flutter Windows 桌面包(.msix.msixbundle 等)。
  3. 为测试报告选择一个目标。

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