我正试图用电子构建器封装一个电子应用程序,这是发布电子应用程序的最流行的库。我在一个Mac上,我有一个开发者帐户。当使用命令电子构建器builder zip运行构建过程时,电子构建器将自动在Mac的密钥链访问中搜索开发人员证书,并将其应用于应用程序。当我为mac构建应用程序时,它看起来很好,包括签名。与签名相关的终端日志是:
signing file=dist/mac/*appname*.app identityName=Developer ID Application: *MyDeveloperName*
(*myDeveloperNumber*) identityHash=*someLongHashString* provisioningProfile=none但是,当我试图打开这个应用程序时,它会立即崩溃,错误报告指出一个无效的签名代码:
Exception Type: EXC_BAD_ACCESS (Code Signature Invalid)
Exception Codes: 0x0000000000000032, 0x000039e9b3542040
Exception Note: EXC_CORPSE_NOTIFY
Termination Reason: Namespace CODESIGNING, Code 0x2然而,开发人员帐户是有效的。如果我在构建它时没有签名(将标识设置为null),它将执行得很好。
// package.json
"build": {
"appId": "com.example.appname"
"mac": {
"identity": null
}
}当我构建并尝试执行任何电子应用程序(包括电子入门页面上的HelloWorld应用程序)时,我都会得到相同的错误结果,所以它是通用的。
电子制造商有一个样板,他们推荐使用Webpacker,我不需要我的应用程序。如果我只是下载样板,并构建一个应用程序,它确实签署它,它确实工作,没有错误。因此,这证实了我的开发者ID没有问题,我宁愿不使用他们的样板,因为它增加了另一层复杂性,我不知道如何使我已经构建的应用程序与他们的样板集成。我只希望我的应用程序签名在一个普通的应用程序上工作。我是不是错过了一些基本步骤?是什么导致了这个问题?
发布于 2019-12-23 19:49:22
我把这个搞定了。在签署之前,我必须启用苹果的硬运行时(https://developer.apple.com/documentation/security/hardened_runtime_entitlements)。经过强化的运行时为应用程序增加了一些限制,使用户能够更好地抵御潜在的攻击,如代码注入、动态链接库(DLL)劫持和进程内存空间篡改。
本质上,遵循这个博客中的步骤,电子构建器也链接到https://kilianvalkhof.com/2019/electron/notarizing-your-electron-application/。这在我试过几次(在发布这个问题之前)时,出于某种原因并没有奏效,但现在起了作用。这些说明是为了公证应用程序,但如果你只想签署它,只需遵循前两个步骤。最重要的是,如果不添加经过改进的运行时,应用程序启动时的签名就会失败。
https://stackoverflow.com/questions/59441383
复制相似问题