如何将 Electron 应用发布到应用商店?
How to publish Electron app to the app store?
我已经将应用程序打包为 mas 文件以上传到 App Store。但是
- 从 Xcode11 开始,他们不再提供 应用程序加载器。
- Electron 不生成 XCode 项目。
在这种情况下,最佳解决方案是什么?
1.我们需要在 developer.apple.com 上生成证书,还需要导入我们的钥匙串。
- Apple 开发 证书
- Apple 发行版 证书
- Mac 应用分发 证书(用于公证)
- Mac 安装程序分发 证书(用于公证)
- (第 3 方)开发者 ID 应用程序 证书(用于发布到应用商店)
- (第 3 方)Developer ID Installer 证书(用于发布到 App store)
然后您需要从应用商店连接下载您应用的配置文件。 (放在任何你想放的地方,但需要在配置中注明)
您可以在此处找到创建和下载应用程序的配置文件 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
必须设置为苹果的要求)
在 运行 npm run build
之后表示 (electron-builder .)
Electron-builder 将生成 mas
、mac
、pkg
,然后是
3。将应用程序上传到 Mac App Store。我使用了 Transporter
,可在 Mac App Store 获取。 (正如我之前提到的问题。从 Xcode11 他们不再支持应用程序加载器)
IMPORTANT: Electron-builder has fixed the signing issue from v22.5.0 So you need to use later version.
最后是与当前 electron-builder 配合良好的项目结构。
参考:
https://github.com/electron/electron-osx-sign/issues/188
https://github.com/electron/electron/issues/22656
希望对你有帮助~
(不幸的是:启用沙箱后应用程序停止工作。Electron 团队正在处理此任务。所以相信这很快就会得到解决。https://github.com/electron/electron/issues/24936)