电子中的节点画布——“映射文件没有 cdhash,完全未签名?代码必须至少经过临时签名”

如何解决电子中的节点画布——“映射文件没有 cdhash,完全未签名?代码必须至少经过临时签名”

我正在使用节点画布制作电子应用程序。
我通过以下命令生成一个应用安装程序:

$ electron-builder --mac --x64 --config ./build_mac.js

build_mac.js

const config = {
  "appId": "jp.maplat.editor","asarUnpack": [
    "assets/mac/canvas"
  ],"directories": {
    "output": "dist"
  },"files": [
    "assets/mac","backend","css","frontend/dist","html","img","locales","package.json","package-lock.json","tms_list.json"
  ],"afterSign": "script/notarize/notarize.js","mac": {
    "icon": "assets/mac/icon_mac.icns","target": [
      "dmg"
    ],"hardenedRuntime": true,"gatekeeperAssess": false,"entitlements": "script/notarize/entitlements.mac.plist","entitlementsInherit": "script/notarize/entitlements.mac.plist",},"win": {
    "icon": "assets/win/icon_win.ico","target": "nsis"
  },"nsis":{
    "oneClick": false,"allowtochangeInstallationDirectory": true
  }
};

module.exports = config;

但在安装完电子应用程序后,应用程序在网页控制台上输出以下错误信息:

未捕获的错误:dlopen(/Applications/MaplatEditor.app/Contents/Resources/app.asar.unpacked/assets/mac/canvas/build/Release/canvas.node,1): 库未加载:/usr/local /opt/pixman/lib/libpixman-1.0.dylib 引用自:/Applications/MaplatEditor.app/Contents/Resources/app.asar.unpacked/assets/mac/canvas/build/Release/canvas.node 原因:没有找到合适的图片。有没有发现: /usr/local/opt/pixman/lib/libpixman-1.0.dylib:(/usr/local/opt/pixman/lib/libpixman-1.0.dylib) 中的代码签名在使用库验证的进程中无效:映射文件没有 cdhash,完全未签名?代码必须至少经过临时签名。

如何解决这个问题? 我认为有两个问题,

  1. 如何签署这个 dylib?
  2. 这个 dylib 看起来安装在“/usr/local/opt”下,它在应用程序文件夹之外。这是正确的预期行为吗?

有人知道答案吗?

解决方法

解决此问题的解决方案是将所有 dylib(除“/usr/lib”或“/System/Library/Frameworks”下)放在电子控制的文件夹下。

在我的项目中是这样的: https://github.com/code4history/MaplatEditor/tree/master/assets/mac/canvas/build/Release

但是仅仅放置 dylib 是行不通的,因为每个 dylib 都有关于链接到其他库的信息。

您可以使用“otool”命令检查每个dylib链接的库,您可以使用“install_name_tool”命令覆盖它。

https://github.com/code4history/MaplatEditor/blob/master/mac_canvas_dylib

在此 URL 中,您可以找到我为我的项目所做的工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?