构建和发布 Windows 桌面应用
分发 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 检索必要的信息。
- 在 Partner Center 中,导航到您的应用程序。
- 选择 产品管理。
- 通过点击 产品标识 来检索包标识名称、发布者和发布者显示名称。
手动打包应用程序后,手动将其提交到 Microsoft Partner Center。您可以通过创建新的提交、导航到 Packages 并上传创建的应用程序包来完成此操作。
持续部署
#除了手动创建和部署包之外,在首次将应用程序提交到 Microsoft Store 后,您还可以使用 CI/CD 工具自动完成构建、打包、版本控制和部署过程。
Codemagic CI/CD
#Codemagic CI/CD 使用 msix
pub 包来打包 Flutter Windows 桌面应用程序。
对于 Flutter 应用程序,请使用 Codemagic Workflow Editor 或 codemagic.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_ID
、AZURE_AD_CLIENT_ID
和 AZURE_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 发布所需的步骤与以下类似:
- 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
。
构建名称将成为文件版本和产品版本的前三个数字,而构建号将成为文件版本和产品版本的第四个数字。
可以通过指定 --build-name
和 --build-number
分别在 flutter build windows
中覆盖构建名称和构建号。
添加应用图标
#在打包之前更新 Flutter Windows 桌面应用程序的图标,请使用以下说明:
- 在 Flutter 项目中,导航到 windows\runner\resources。
- 将 app_icon.ico 替换为您想要的图标。
- 如果图标的名称不是 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) 中包含的一个工具。
验证应用程序
- 启动 Windows App Cert Kit。
- 选择 Flutter Windows 桌面包(.msix、.msixbundle 等)。
- 选择测试报告的目标位置。
即使认证通过,报告也可能包含重要的警告和信息。