Electron macOS 打包签名配置:

未签名的应用程序运行报错:

“Appname.dmg” can’t be opened because Apple cannot check it for malicious software.
This software needs to be updated. Contact the developer for more information.

或中文:

无法打开“Appname.app”,因为无法验证开发者。
macOS 无法验证此 App 不包含恶意软件。

  • 项目中使用的electron-builder打包工具,就具体介绍electron-builder签名的方法, electron-builder 附带一个自定义解决方案,用于签署应用程序。 官方文档地址它的文档
  • 其他方法可以去官网文档进行查看

证书生成

  • 打开mac电脑钥匙串 - 钥匙串访问 - 证书助理 - 从证书颁发机构申请证书

1、 打开钥匙串 打开钥匙串 2、 生成证书 生成证书 3、 导出证书 导出证书

证书配置

1、登录Apple开发者后台,进入证书页面 登录Apple开发者后台 2、点击Certificates 添加证书,如果不在Apple store 发布的话选择:Developer ID Application 3、然后在你mac电脑登录打开Xcode并登录你的开发者账号(很重要)

打包配置(公正配置)

  • 使用 Electron-notarizeElectron 程序进行公证。

1、在你的配置文件中进行配置,例如package.json

  // package.json  {    "build": {      "afterSign": './mac/notarize.js',        "mac": {        "hardenedRuntime": true, // 使用强化的运行时构建您的应用程序        "gatekeeperAssess": false, // 禁用此健全性检查        "artifactName": '${productName}_${version}.${ext}', // 应用名称        "entitlements": './mac/entitlements.mas.plist',        "entitlementsInherit": './mac/entitlements.mas.plist',      },    }  }```` "afterSign": './mac/notarize.js'`
  • Electron-notarize 打包自动签名加载的js文件

"hardenedRuntime": true,

  • 使用强化的运行时构建您的应用程序(强化会拥有更多的权利)

"gatekeeperAssess": false

  • electron-builder 使用的签名工具称,为electron-osx-sign,会进行健全性检查以验证签名是否成功。在 MacOS 10.14.5 之前,此健全性检查会返回正数,但在 10.14.5 中,它会返回错误,因为虽然签名进行得很顺利,但应用程序尚未(尚未!)经过公证,这是一个错误。

"entitlements": './mac/entitlements.mas.plist'

  • 加载强化文件

2、新增 notarize.js

  // ./mac/notarize.js  require('dotenv').config()  const { notarize } = require('electron-notarize')  exports.default = async function notarizing(context) {    const { electronPlatformName, appOutDir } = context    if (electronPlatformName !== 'darwin') {      return    }    const appName = context.packager.appInfo.productFilename    return await notarize({      appBundleId: 'com.ClientMacOS',  // appid      appPath: `${appOutDir}/${appName}.app`, // 应用的路径 xxx.app 结尾的       appleId: 'User@.com', // 苹果开发者 id      appleIdPassword: 'PassWord', // 应用专用密码(可以是你的登录密码,也可以在苹果官网申请专用密码)      ascProvider: 'XXXXXXXXX',  // 证书提供者    })  }

appleId

  • 你的 Apple 开发者账号

appleIdPassword

  • 你的 Apple 开发者账号密码。出于安全考虑,建议不要直接将密码写出来,这儿 可以使用专用密码等。

ascProvider

  • 此项是选填的,如果你的开发者账号与多个团队关联,运行时可能会遇到以下错误:

3、 新增 entitlements.mas.plist

  // ./mac/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.cs.allow-unsigned-executable-memory</key>      <true/>    </dict>  </plist>

打包

  • 完成以上配置后就可以进行打包了,正常运行electron-builder 的命令,就可以在完成打包之后,继续执行签名,公正的工作,
  • 成功和失败都会收到Apple 给你发的提醒邮件