【问题标题】:How to publish Electron app to the app store?如何将 Electron 应用发布到应用商店?
【发布时间】:2020-11-22 18:15:10
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript xcode macos electron electron-builder


    【解决方案1】:

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

    • Apple 开发证书
    • Apple 分发 证书
    • Mac 应用分发 证书(用于公证)
    • Mac 安装程序分发 证书(用于公证)
    • (第 3 方)开发者 ID 申请证书(用于发布到应用商店)
    • (第 3 方)Developer ID Installer 证书(用于发布到 App Store)

    然后您需要从 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 表示 (electron-builder .) Electron-builder 将生成masmacpkg 然后

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

    重要提示:Electron-builder 已从 v22.5.0 修复了签名问题 所以你需要使用更高版本。

    最后是与当前电子构建器配合良好的项目结构。

    参考:

    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

    【讨论】:

    • 这方面有什么更新吗? Electron 方面是否仍然存在阻塞问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-12
    • 2016-02-20
    • 2021-04-10
    • 1970-01-01
    相关资源
    最近更新 更多