是否仍然可以将 Electron 应用程序发布到 Mac 商店?

分享于2022年07月17日 app-store-connect electron electron-builder macos 问答
【问题标题】:是否仍然可以将 Electron 应用程序发布到 Mac 商店?(Is it still possible to publish an Electron app to the Mac Store?)
【发布时间】:2022-06-12 03:09:02
【问题描述】:

我正在尝试将我的 Electron 应用程序成功提交到 Mac Store。我想把它放到TestFlight中,类似于我提交相应iOS应用的方式。最终,我希望这两个流程都成为 CI 管道的一部分。 iOS 版本已准备就绪。

对于 Electron 应用,我使用 Electron-Builder 进行打包和签名,并利用 electron-builder-notarize 来通过 Apple 公证步骤。在潜入几个成为成熟的兔子沃伦大都市的兔子洞大约一周后,我终于有了一个配置设置、证书、plist 和 pixie dust 的工作组合,我的管道成功地构建了 并进行了公证 em> 我的“mas”目标包。

我认为,一旦我通过了相当可怕的公证步骤,我就会走出困境——毕竟,Apple 对其进行了“公证”(并给我发了一封电子邮件来证明这一点)。但是当我使用 Apple Transporter 应用程序将它发布到 App Store 时(我现在手动使用它,直到我证明它有效,然后我将使用 CLI 命令来完成我的 CI 实现)它报告应用程序因 5 个问题而被拒绝。这些实际上是同一事物的变体:

  • Electron.app' 已被另一个应用程序使用。
  • Electron.app/Contents/Frameworks/Electron Helper (GPU).app' 已被另一个应用程序使用。
  • /Electron.app/Contents/Frameworks/Electron Helper (Plugin).app' 已被另一个应用程序使用。
  • Electron.app/Contents/Frameworks/Electron Helper (Renderer).app' 已被另一个应用程序使用。
  • Electron.app/Contents/Frameworks/Electron Helper.app' 已被另一个应用程序使用。

我认为 Electron-Builder 应该处理这些内部 id。我的“mas”配置块看起来像

    "mas": {
      "type": "distribution",
      "hardenedRuntime": false,
      "provisioningProfile": "embedded.provisionprofile",
      "entitlements": "build/entitlements.mas.plist",
      "entitlementsInherit": "build/entitlements.mas.inherit.plist",
      "entitlementsLoginHelper": "build/entitlements.mas.loginhelper.plist",
      "publish": null
    },

我相信这是指定这些内部二进制文件已签名所需要的。也许不是。复制其他也不得不放弃文档的人不一定能保证成功。但这些事情确实让我走到了这一步。

我搜遍了 SO 和其他 Internet 站点,当然还有那些写得不好且经常晦涩难懂的官方文档来源,但我找不到这个问题的答案。

在我的旅行中,我偶然遇到了 this blog ,这让我觉得即使我过了这一段,前面可能还有很长的颠簸路,结果可能是一条死胡同。

我注意到许多开发人员评论说他们选择放弃 Mac 商店,而是简单地使用自己的 URL 链接自行发布以供下载。至少,这似乎是一种耻辱,而且肯定不是我的偏好。

这让我们怀疑这是否可能。许多帖子(更不用说文档)包含过时的信息,很少有帖子更新超过一年。很多事情都变了。也许每个人都认输了。我是在徒劳的追求吗?


【解决方案1】:

我相信我找到了“这可能吗?”这一主要问题的答案。我可能还会遇到其他问题,但我发现了主要问题。

我的 Electron 项目与“Electron-quick-start”模板的构造不同,因此 Electron-builder 打包和签名步骤在所有正常位置都找不到他们要查找的内容。

我不能 100% 确定我可以成功地将我的项目重建为“规范”格式,但这似乎是解决方案。

我能够在几分钟内创建一个基本的快速启动应用程序并将其上传到 App Store,因此所有部分都可以正常工作。该项目只需要正确的构造即可。