构建和发布为 Windows 应用

发布 Windows 桌面应用程序的便捷方法是将其发布至 微软应用商店,本指南提供了将 Flutter 应用发布到 微软应用商店 的分步操作指南。

预先准备

在开始发布 Flutter Windows 桌面应用程序之前,有必要确认你的应用满足 微软应用商店政策

提交应用前加入 微软合作伙伴网络 也是必要的。

在合作伙伴中心申请应用

微软合作伙伴中心 中管理一个应用程序的生命周期。

首先,有必要预约应用名称,并且确定有使用这个名称的权利。一旦名称确定可用,则该应用程序将可以提供推送通知等服务,并且可以开始添加扩展功能。

类似于价格、可用性、年龄等级和类别等选项必须在第一次提交时一并配置,这些选项在后续提交时将自动保留。

打包并部署

应用程序发布到微软商店前必须要打包。有效的格式是 .msix.msixbundle.msixupload.appx.appxbundle.appxupload.xap

手动打包和部署

查看 MSIX 打包,学习如何打包 Flutter Windows 桌面应用程序。

请注意,每个产品都有一个唯一的 ID,这是应用商店分配的。

如果应用包是手动构建的,在打包过程中必须手动添加 ID 详情。这些基本信息可以从合作伙伴中心检索到。

  1. 在合作伙伴中心中,导航到应用程序。

  2. 选择 Product management

  3. 点击 Product identity,检查应用包的 ID,发布者,发布者的显示名称。

在手动打包应用程序后,还需要手动提交应用程序包到 微软合作伙伴中心。这个步骤可以通过创建新的提交来完成,导航到 Packages,并上传创建的应用程序包。

持续部署

除了手动创建和部署软件包外,在第一次提交应用程序到微软商店后,还可以使用持续集成/持续部署 (CI/CD) 工具自动化构建、打包、版本管理、和部署应用程序。

Codemagic 持续集成/持续部署 (CI/CD)

Codemagic 持续集成/持续部署 (CI/CD) 使用 Pub 上的 msix package 来打包 Flutter Windows 桌面应用程序。

对于 Flutter 应用程序,无论是 Codemagic Workflow Editor 还是 codemagic.yaml 都可以用来打包应用程序并部署到微软合作伙伴中心。其他选项(如软件包中包含的功能列表和语言资源)可以使用上述的软件包进行配置。

对于发布应用来说,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 package,所以项目的 pubspec.yaml 必须包含一个合适的 msix_config 节点。

你必须从 Dev Center 创建一个具有 全局管理员权限 的 Azure AD 目录。

GitHub Action 需要从合作伙伴中心获取环境秘钥。 AZURE_AD_TENANT_IDAZURE_AD_ClIENT_IDAZURE_AD_CLIENT_SECRET 在遵循 Windows Store Publish Action 的说明后,可以在 Dev Center 上看到。您还需要 SELLER_ID 秘钥,可以在 Dev Center 的 帐户设置 > 组织简介 > 法律信息 下找到。

应用程序必须已经在 Microsoft Dev Center 上有至少一个完整的提交,且必须在仓库中运行一次 msstore init,Action 才能执行。完成后,在 GitHub Action 中运行 msstore packagemsstore publish 将应用程序打包为 MSIX 并将其上传到 dev center 的一个新提交上。

可以在 Flutter Gallery 中找到一个用于持续部署的 Action YAML 文件示例。下面摘录了进行 MSIX 发布所需的步骤:

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

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

      - name: Create MSIX
        run: msstore package .

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

更新应用程序的版本号

对于发布到微软商店的 Flutter 桌面版应用,版本号必须在打包过程中设置,而不能通过 pubspec.yaml 或命令行参数设置。

默认的应用版本号为 1.0.0.0

对于还没有发布到微软商店的应用程序,你可以设置应用程序的可执行程序和产品的版本。可执行程序的默认版本是 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 package 打包时,可以在 pubspec.yaml 文件中配置 logo 路径。

要更新商店列表中的应用程序图标,请导航到提交的商店列表并选择商店 logo。在那里可以上传尺寸为 300 x 300 像素的图片。

所有上传的图片将被保留,以便于以后提交使用。

验证应用程序包

在发布到微软商店之前,建议先在本地验证应用程序包。

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

验证应用程序:

  1. 启动 Windows 应用认证工具包。

  2. 选择 Flutter Windows 桌面应用程序包(.msix.msixbundle 等)。

  3. 选择测试报告的输出目录。

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