gpt4 book ai didi

当我在 Mac 上签名时 Electron 应用程序崩溃

转载 作者:行者123 更新时间:2023-12-02 05:03:03 25 4
gpt4 key购买 nike

我正在尝试使用 electro-builder 打包一个 Electron 应用程序,这是用于发布 Electron 应用程序的最流行的库。我使用的是 Mac,并且有一个开发者帐户。当使用命令 electron-builder build --mac zip 运行构建过程时,Electron-builder将自动在我的Mac的钥匙串(keychain)访问中搜索开发人员证书,并将其应用到应用程序。当我为 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
}
}

当我构建并尝试执行任何 Electron 应用程序(包括 Electron 入门页面上的 HelloWorld 应用程序)时,我得到相同的错误结果,因此它是通用的。

Electron-builder 有一个他们推荐使用 Webpacker 的样板,但我的应用程序不需要它。如果我只是下载该样板并构建一个应用程序,它会对其进行签名,并且它确实可以正常工作而不会出现错误。这证实了这不是我的开发者 ID 的问题。我宁愿不使用他们的样板,因为它增加了另一层复杂性,而且我不确定如何使我已经构建的应用程序与他们的样板集成。我只希望我的应用程序签名能够在常规应用程序上运行。我错过了一些基本步骤吗?什么可能导致此问题?

最佳答案

我成功了。在签署之前,我必须启用 Apple 的 Hardened Runtime ( https://developer.apple.com/documentation/security/hardened_runtime_entitlements )。强化的运行时为您的应用程序增加了限制,为用户提供了针对潜在漏洞的更高安全性,例如代码注入(inject)、动态链接库 (DLL) 劫持和进程内存空间篡改。

基本上遵循此博客中的步骤,Electron-builder 也链接到 https://kilianvalkhof.com/2019/electron/notarizing-your-electron-application/ 。由于某种原因,这对我最初几次尝试(在发布此问题之前)不起作用,但现在可以了。这些说明用于公证应用程序,但如果您只想对其进行签名,只需按照前两个步骤操作即可。要点是,如果不添加强化的运行时,签名将在应用程序启动时失败。

关于当我在 Mac 上签名时 Electron 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59441383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com