构建并发布 Windows 桌面应用
如何将 Flutter 应用发布到 Microsoft Store。
分发 Windows 应用的一种便捷方式是使用 Microsoft Store。本指南提供了通过这种方式打包和部署 Flutter 应用的分步指南。
准备工作
#在开始将 Flutter Windows 桌面应用发布到 Microsoft Store 的流程之前,请先确认它符合 Microsoft Store 政策。
此外,您必须加入 Microsoft 合作伙伴网络才能提交应用。
在合作伙伴中心(Partner Center)设置您的应用程序
#在 Microsoft 合作伙伴中心管理应用程序的生命周期。
首先,预留应用程序名称并确保拥有该名称的相关权利。名称预留后,将为应用程序配置各项服务(例如推送通知),您便可以开始添加附加组件(Add-ons)。
定价、可用性、年龄分级和类别等选项必须在首次提交时进行配置,并会自动保留供后续提交使用。
打包与部署
#为了将应用程序发布到 Microsoft Store,您必须先对其进行打包。有效格式包括 .msix、.msixbundle、.msixupload、.appx、.appxbundle、.appxupload 和 .xap。
为 Microsoft Store 进行手动打包和部署
#请查看 MSIX 打包以了解如何打包 Flutter Windows 桌面应用程序。
请注意,每个产品都有一个由商店分配的唯一标识。
如果软件包是手动构建的,则必须在打包过程中手动包含其标识详细信息。可以按照以下说明从合作伙伴中心获取必要信息:
- 在合作伙伴中心中,导航至该应用程序。
- 选择 Product management(产品管理)。
- 点击 Product identity(产品标识)以获取包标识名称、发布者和发布者显示名称。
手动打包应用程序后,请将其手动提交到 Microsoft 合作伙伴中心。您可以通过创建新提交、导航到 Packages(软件包)并上传创建好的应用程序包来完成此操作。
持续部署
#除了手动创建和部署包之外,在首次将应用程序提交到 Microsoft Store 后,您还可以使用 CI/CD 工具自动完成构建、打包、版本控制和部署流程。
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 节点。
您必须从开发中心(Dev Center)创建一个具有全局管理员权限的 Azure AD 目录。
GitHub Action 需要来自合作伙伴中心的部署密钥(Secrets)。AZURE_AD_TENANT_ID、AZURE_AD_CLIENT_ID 和 AZURE_AD_CLIENT_SECRET 可在开发中心按照 Windows Store 发布 Action 的说明获取。您还需要 SELLER_ID 密钥,该密钥可在开发中心的 Account Settings(账户设置) > Organization Profile(组织资料) > Legal Info(法律信息)下找到。
应用程序必须已存在于 Microsoft 开发中心并至少有一个完整的提交,并且在执行 Action 之前,必须在仓库中运行一次 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 桌面应用程序的图标,请按照以下说明操作:
- 在 Flutter 项目中,导航到 windows\runner\resources。
- 将 app_icon.ico 替换为您想要的图标。
- 如果图标名称不是 app_icon.ico,请继续更改 windows\runner\Runner.rc 文件中的 IDI_APP_ICON 值,使其指向新路径。
使用 msix pub 软件包打包时,也可以在 pubspec.yaml 文件中配置徽标路径。
要更新商店列表中的应用程序图像,请导航到提交的“商店列表”步骤并选择“商店徽标”。从那里,您可以上传尺寸为 300 x 300 像素的徽标。
所有已上传的图像都会被保留供后续提交使用。
验证应用程序包
#在发布到 Microsoft Store 之前,请先在本地验证应用程序包。
Windows 应用认证工具包(Windows App Certification Kit)是 Windows 软件开发工具包 (SDK) 中包含的一个工具。
验证应用程序:
- 启动 Windows 应用认证工具包。
- 选择 Flutter Windows 桌面程序包(.msix、.msixbundle 等)。
- 为测试报告选择一个目标路径。
即使认证通过,报告中也可能包含重要的警告和信息。