作者复盘Electron应用两次提交、一次被拒的上架经历,涵盖Appx专用PNG资源、包签名和外部支付等问题。微软商店可代为签名,避免独立分发时触发SmartScreen警告。
我以独立开发者的身份,将一款 Windows 桌面 AI 助手发布到了 Microsoft Store。整个过程经历了两次提交、一次驳回,以及若干文档里从未提及的意外情况。
下面这份清单,正是我希望自己开始之前就能看到的内容。
当时,我已经有了一个可以正常工作的 NSIS 安装程序,支付流程则由外部服务商处理。乍看之下,为了上架 Microsoft Store 而折腾这一番并不值得。但有两个原因改变了我的想法。
Microsoft 会替你签署应用包。如果不通过 Microsoft Store 发布,那么每位 Windows 用户第一次启动应用时,都会看到 SmartScreen 警告。想避免这个警告,唯一的办法就是购买代码签名证书。对于一名独立开发者,尤其是当你发布的是一款注重隐私的产品时,让用户忽略并绕过安全警告,显然不是一个好的第一印象。
第二个原因是 2026 年的新政策:非游戏类应用可以使用自己的支付系统。我的整个购买流程都在 Microsoft Store 之外,因此完全不需要修改。
我的 package.json 中已经配置了一个完全可用的 build/icon.ico。NSIS 会使用它,但 appx target 不会。
Appx 应用包需要特定尺寸的 PNG 资源,而 electron-builder 不会根据你的 ico 文件自动生成这些资源。你需要创建一个 build/appx/ 文件夹,其中至少包含:
如果缺少这些文件,构建仍然会成功,但你的应用最终只会显示一个空白磁贴。
如果你的 Electron 应用需要访问文件系统,就必须声明 runFullTrust,而 Partner Center 会要求你在文本框中填写申请该权限的理由。
这个文本框的字符数限制非常低,却不会告诉你具体限制是多少。较长的说明会在没有任何警告的情况下被截断。因此,请写两句话,不要写两段话。
我第一次构建出的 appx 有 526 MB。第二次构建的版本在功能上完全相同,却只有 191 MB。
问题出在 electron-builder 配置中的 files 数组。**/* 意味着包含所有内容,其中也包括那些永远不应该随应用发布的开发依赖。在上传一个半 GB 大小的应用包之前,务必先检查这个数组。
我的第一次提交被驳回了。只有一个原因,没有其他问题。
原因是政策 11.16:Live Generative AI Content。如果你的应用会生成 AI 内容,就必须在应用内为用户提供举报不当内容的方式。这个入口必须清晰可见,而且用户只需点击一次即可到达。
我花了几个月设计隐私架构:零数据留存、不上传文件、本地处理,并关闭服务商一侧的数据收集。我仔细思考过数据会流向哪里,却完全没有考虑过模型说错话之后应该怎么办。
修复这个问题花了半天时间:
重新提交后,24 小时内便通过了审核。
这才是真正让我付出代价的问题。
我的服务器通过下面的方式启动了一个子进程:
spawn("node", [path.join(__dirname, "dist/index.js")])
这段代码在我的电脑上可以正常运行,因为我的电脑安装了 Node.js。但用户的电脑上并不一定安装了它。
应用可以正常启动,UI 也能正常渲染,没有任何崩溃,甚至顺利通过了认证。然而,每一位输入消息的用户都会等待 60 秒,最后只得到一个笼统的错误提示——因为子进程根本没有启动。
spawn(process.execPath, [path.join(__dirname, "dist/index.js")], {
env: { ...process.env, ELECTRON_RUN_AS_NODE: "1" },
})
Electron 自带 Node runtime。请直接使用它,不要寄希望于用户已经安装了 Node.js。
为了验证这个修复,我重命名了本机的 Node.js 安装目录,让电脑表现得像一台干净的用户设备:
Rename-Item "C:\Program Files\nodejs" "C:\Program Files\nodejs_off"
每次提交之前,都应该在这种状态下运行你的打包版应用。花 5 分钟测试,总好过再等待两天的认证流程。
Microsoft Store 认证检查的是合规性,而不是应用功能。
它会验证签名、manifest 有效性、声明的 capabilities、政策合规性,以及应用启动时是否会崩溃。
它不会验证你的应用是否真的能够正常工作。这完全是你的责任。
填写年龄分级问卷后,你会获得一个 IARC Global Rating ID。这个 ID 可以在其他获得 IARC 授权的商店中使用,无须重新填写调查问卷。如果你新增的功能会改变原有答案,就需要重新填写。
这款产品名为 NeonCore,是一款 Windows AI 助手,可以处理文档,而无须将文档上传到任何地方。由我独立开发。
部分评论可能只有已登录的访客才能看到。登录后即可查看全部评论。
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。