如何在应用商店上发布Electron应用?

时间:2020-08-02 13:29:26

标签: javascript xcode macos electron electron-builder

我已将应用打包为mas文件,以上传到App Store。但是

  1. 从Xcode 11开始,他们不再提供应用程序加载器
  2. Electron不会生成XCode项目。

在这种情况下,最佳解决方案是什么?

1 个答案:

答案 0 :(得分:4)

1。我们需要在developer.apple.com上生成证书,也需要导入到我们的钥匙串中。

  • Apple Development 证书
  • Apple Distribution 证书
  • Mac App Distribution 证书(用于公证)
  • Mac Installer发行版证书(用于公证)
  • (第三方)开发者ID申请证书(用于发布到App Store)
  • (第三方)开发人员ID安装程序证书(用于发布到App Store)

enter image description here

然后,您需要从App Store Connect下载应用的配置文件。 (将其放置在您想放置的任何地方,但需要在配置中指出)

您可以在 https://developer.apple.com/account/resources/profiles/list

中找到创建和下载应用的配置文件

2。需要配置您的electron-builder.,这是配置。

{
    "productName": "your product",
    "appId": "com.my.first.app", //which can be found on your app store connect
    "directories": {
        "buildResources": "buildResources",
        "output": "release"
    },
    "files": ["main.js", "node_modules", "build" ], // include other necessary resources.
    "mac": {
        "type": "distribution",
        "target": ["mas", "pkg", "dmg"],
        "artifactName": "${productName}-${version}-${os}.${ext}",
        "category": "public.app-category.utilities",
        "provisioningProfile": "embedded.provisionprofile"
    },
    "mas": {
        "hardenedRuntime" : false, //IMPORTANT!!!!
        "type": "distribution",
        "category": "public.app-category.utilities",
        "entitlements": "build/entitlements.mas.plist",
        "entitlementsInherit": "build/entitlements.mas.inherit.plist"
    },
}

build / entitlements.mas.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>com.apple.security.app-sandbox</key>
        <true/>
        <key>com.apple.security.application-groups</key>
        <string>[prefix (on your app store connect)].[app bundleID EX: com.desktop.app]</string>
        <key>com.apple.security.cs.allow-jit</key>
        <true/>
        <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
        <true/>
        <key>com.apple.security.cs.allow-dyld-environment-variables</key>
        <true/>
    </dict>
</plist>

build / entitlements.mas.inherit.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>com.apple.security.app-sandbox</key>
        <true/>
        <key>com.apple.security.inherit</key>
        <true/>
    </dict>
</plist>

(因为此权利列表是基本列表,您可以根据需要进行配置,但是上面的列表对于发布应用程序商店是必需的。特别是,sand-box必须设置为Apple的要求)

运行npm run build后,这意味着(电子生成器。) 电子生成器将生成masmacpkg,然后

3。将应用程序上载到Mac App Store。我使用了Transporter,它可以在Mac App Store中使用。 (正如我之前提到的那样。从Xcode11开始,它们不再支持应用程序加载器了)

重要提示:Electron-builder已修复v22.5.0版中的签名问题 因此,您需要使用替代版本。

最后,这是与当前电子生成器配合良好的项目结构。 enter image description here

参考:

https://medium.com/@jondot/shipping-electron-apps-to-mac-app-store-with-electron-builder-e960d46148ec

https://github.com/electron/electron-osx-sign/issues/188

https://github.com/electron/electron/issues/22656

希望这对您有很大帮助〜

(不幸的是:启用沙箱后,应用程序停止运行。Electron团队正在执行此任务。因此,相信此问题将很快得到解决。https://github.com/electron/electron/issues/24936