如何把开源应用发布到 Microsoft Store:MSIX 打包实操与过审要点
【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend
LocalSend 是一款开源的跨平台文件互传工具,同一 Wi‑Fi 下手机和电脑可以像 AirDrop 一样直传文件。这篇文章带你走一遍它的 MSIX 打包(MSIX 是微软的现代安装包格式,可被商店分发、签名校验、干净卸载)和 Microsoft Store 上架流程:一条最短命令链出包,再对着清单自检、提交过审。
先看到终点:上架后各得到什么
- 用户侧:应用直接出现在商店搜索结果里,点击即装,不用跑安装向导,也不弹管理员授权框;后续更新由商店自动推送。
- 开发者侧:手里多了一个带商店签名的
.msix文件,官方渠道是商店;商店之外(比如项目 Releases)也可以把包发出去,用户右键即可安装。 - 维护侧:版本号、更新分发、回滚都收敛到 Partner Center(微软的开发者后台)一个入口里管理。
动手前的准备清单 ✅
把环境、证书、资源三类事项一次勾完,后面就不会中途卡住:
- Windows 10 1903 及以上(系统版本 10.0.19041.0 起步,与项目清单里
TargetDeviceFamily的MinVersion对齐),装好 Visual Studio 2022 并勾选 C++ 桌面开发(会带上 Windows SDK) - Flutter SDK 版本与项目要求一致,
fvm flutter doctor无红字;LocalSend 用 fvm 管理版本,跟着仓库走即可 - 准备一份代码签名证书(
.pfx格式 + 密码)。商店版本最终由商店签名,但本地自签分发版本需要它,且证书主题(Subject)必须和清单里的Publisher一字不差 - 图标资源齐套。LocalSend 的资源放在
support/build/msix/content/Images/下,包含 Square44x44Logo、Square150x150Logo、SmallTile(71x71)、LargeTile(310x310)、Wide310x150Logo、StoreLogo(50x50)、SplashScreen(620x300),缺任何一个,安装后图标就会缺斤少两 - 版本号递增:
app/pubspec.yaml里是1.18.2+64这种格式,商店要求清单Version的四段数字严格大于线上版本,别偷懒不改 - 清单文件
support/build/msix/content/AppxManifest.xml里的Identity(Name + Version + Publisher)三处信息核对无误
打包实操:一条命令链出 MSIX 📦
以下命令都在app目录里执行,共三段,照抄即可跑通。
第一步,清空缓存并拉取依赖,避免旧产物干扰:
fvm flutter clean fvm flutter pub get第二步,生成 i18n、资产等代码(build_runner 跑一遍代码生成器):
fvm dart run build_runner build -d第三步,打包出商店兼容版,--store参数表示产物按商店规范处理(不做本地签名,留给商店流程):
fvm flutter pub run msix:create --store产物在build/windows/x64/runner/Release/localsend_app.msix,重命名成带版本号的文件名(例如LocalSend-1.18.2-windows-x64.msix)就可以上传了。仓库里support/scripts/compile_windows_msix_store.ps1已经把这条链固化成脚本,签名版脚本同目录下也有,本质就是给msix:create加上证书路径和密码两个参数,不用手写。
提交商店与过审要点 🏪
提交前自检:包架构要与提交声明一致(本项目是 x64);商店版不要带自己的签名,Partner Center 上传后会覆盖;确认清单版本号比线上版本高。
元数据坑点:应用描述至少要 100 字符;截图 5 张起,尺寸 1366x768 或 1920x1080;商店图标 300x300;隐私政策链接、支持邮箱一个都不能空。LocalSend 是局域网工具,隐私声明里要说明"网络权限仅用于发现同一网络内设备",别含糊。
认证注意:清单里声明了runFullTrust这个受限能力(表示应用以完整权限运行而非沙盒),商店会重点审这一点——隐私政策必须解释清楚网络用处的用途;描述文案避免"最安全""绝对"这类绝对化用词;审核人员会真的用包测一遍收发流程,保证离线局域网场景功能完整是加分项也是硬要求。
常见翻车点(现象 → 原因 → 处理)
- 打包报证书错误→ 证书过期,或清单
Publisher与 pfx 主题对不上 → 换有效证书,并让两处字符串完全一致后重打。 - 装好后图标是空白或默认样式→
Images目录缺图或清单里图片路径写错 → 对照support/build/msix/content/Images/补齐资源再打包。 - 商店提示版本冲突、拒绝上传→ 新包四段版本号没有高于当前线上版本 → 同步递增
pubspec.yaml与清单里的Version。 - 用户双击 .msix 提示无法验证发布者→ 分发包没做代码签名,或系统低于 1903 不支持 → 走签名脚本出包,商店用户则直接引导去商店安装。
- 脚本权限不足跑不动→ 普通终端缺少签名工具权限 → 用 Visual Studio 2022 Developer PowerShell 或管理员身份重开终端执行。
性能与监控方面只提醒一句:出包用 release 模式并开启--tree-shake-icons能明显减小体积,启动慢优先排查资源加载里的同步阻塞,不必为了上架专门做监控埋点。
现在就可以打开 PowerShell,cd app后按上面的三段命令跑一遍——出包成功后,去 Partner Center 建好应用条目、传包填元数据,你的开源应用离上架只差一次"提交认证"按钮。
【免费下载链接】localsendAn open-source cross-platform alternative to AirDrop项目地址: https://gitcode.com/GitHub_Trending/lo/localsend
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考