签名的电子应用程序在 OSX 上不以 robotsjs 开头(未处理的错误:找不到合适的图像)

Posted

技术标签:

【中文标题】签名的电子应用程序在 OSX 上不以 robotsjs 开头(未处理的错误:找不到合适的图像)【英文标题】:Signed electron app does not start with robotjs on OSX (Unhandled Errpr: no suitable image found) 【发布时间】:2020-11-28 02:42:12 【问题描述】:

我有一个经过签名和公证的应用程序,我想在其中使用robotjs 来模拟按键。我在本地构建robotjs 没有问题,但是当我通过 CI 运行它时,我在其中签署并公证了应用程序,应用程序在启动时会引发以下错误:

electron/js2c/asar.js:140 Uncaught Error: dlopen(/var/folders/jh/c4kr0qwj0jz2g6qr9y62v3f80000gn/T/.com.electron.w3champions-launcher.JGzZcr, 1): no suitable image found.  Did find:
    /var/folders/jh/c4kr0qwj0jz2g6qr9y62v3f80000gn/T/.com.electron.w3champions-launcher.JGzZcr: code signature in (/var/folders/jh/c4kr0qwj0jz2g6qr9y62v3f80000gn/T/.com.electron.w3champions-launcher.JGzZcr) not valid for use in process using Library Validation: mapped file has no cdhash, completely unsigned? Code has to be at least ad-hoc signed.
    /var/folders/jh/c4kr0qwj0jz2g6qr9y62v3f80000gn/T/.com.electron.w3champions-launcher.JGzZcr: stat() failed with errno=17
    at process.func [as dlopen] (electron/js2c/asar.js:140)
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:1034)
    at Object.func [as .node] (electron/js2c/asar.js:149)
    at Module.load (internal/modules/cjs/loader.js:815)
    at Module._load (internal/modules/cjs/loader.js:727)
    at Function.Module._load (electron/js2c/asar.js:769)
    at Module.require (internal/modules/cjs/loader.js:852)
    at require (internal/modules/cjs/helpers.js:74)
    at Object.<anonymous> (/Applications/w3champions-launcher.app/Contents/Resources/app.asar/node_modules/robotjs/index.js:1)
    at Object.<anonymous> (/Applications/w3champions-launcher.app/Contents/Resources/app.asar/node_modules/robotjs/index.js:38)

我感觉我没有对构建的 robotjs 东西签名,因此 OSX 在加载它时不高兴。如果我删除公证步骤,我会得到同样的错误。这些是我的构建命令:

"build": "npm run rebuild && vue-cli-service electron:build",
"rebuild": "npm rebuild --runtime=electron --target=9.1.2 --disturl=https://atom.io/download/atom-shell --abi=80",

我在这里找到了一些东西:https://github.com/electron-userland/electron-builder/issues/4040#issuecomment-543252275 但我缺乏电子知识来实现​​这一点。他还使用了我没有的 react 和 2 package.json 解决方案。我是否必须为robotjs添加一个标志步骤,如果是,我该怎么做?在 Windows 上一切正常,签名和构建没有问题。

这将是回购: https://github.com/w3champions/w3champions-launcher

【问题讨论】:

【参考方案1】:

好吧,我不知何故偶然发现了一个帖子,其中发生了类似的事情并修复了它。我在谷歌的冒险之旅中改变了以下几点,也许其中之一可能会对某人有所帮助:

vue.config.js我加了 builderOptions.mac.entitlementsInherit = "build/entitlements.mac.inherit.plist"。之前我只有builderOptions.mac.entitlements

我将这两个权利添加到我的权利列表中:

<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>

在 package.json 中,我将构建更改为

"build": "npm run rebuild && vue-cli-service electron:build",
"rebuild": "npm rebuild --runtime=electron --target=9.1.2 -- disturl=https://atom.io/download/atom-shell --abi=80"

更改只是为了使 abi 成为正确的。您可以通过electron --abi获取所需的abi

【讨论】:

github.com/electron-userland/electron-builder/issues/… 也是一本好书。

以上是关于签名的电子应用程序在 OSX 上不以 robotsjs 开头(未处理的错误:找不到合适的图像)的主要内容,如果未能解决你的问题,请参考以下文章

请求的资源上不存在“Access-Control-Allow-Origin”标头,并且 JWT 令牌不以 Bearer String 开头

请求的资源上不存在“Access-Control-Allow-Origin”标头,并且 JWT 令牌在 put 方法上不以 Bearer String 开头

C# Environment.GetEnvironmentVariable(...) 在 OSX 上不起作用

codesign 在哪里存储 OSX 上已签名文本文件的签名?

如何调试 OSX 代码签名拒绝?

javascript错误:ShadowRoot上不允许使用Robot Framework进行鼠标悬停的方法“elementsFromPoint”