在Electron Builder中包含dll文件

在Electron Builder中包含dll文件,electron,electron-builder,Electron,Electron Builder,我有一个dll文件,我需要用于一个单独的进程,该进程由我的Electron项目中的主进程启动 所以我想在我的electron项目中包含这个dll,我正在使用electron builder来构建这个项目。问题是我不知道如何在不将文件添加到asar包中的情况下包含该文件,而asar包是无法从单独的进程直接访问的。当我使用app.getPath()获取正在运行的实例的路径时,它将如下所示: { "productName": "myApp", "directories": { "out

我有一个dll文件,我需要用于一个单独的进程,该进程由我的Electron项目中的主进程启动

所以我想在我的electron项目中包含这个dll,我正在使用electron builder来构建这个项目。问题是我不知道如何在不将文件添加到asar包中的情况下包含该文件,而asar包是无法从单独的进程直接访问的。当我使用
app.getPath()
获取正在运行的实例的路径时,它将如下所示:

{
  "productName": "myApp",
  "directories": {
    "output": "release/"
  },
    "files": [
        "**/*",
        "my.dll"
    ],
  "win": {
    "icon": "dist",
    "artifactName": "myApp.${ext}",
    "target": [
      "portable"
    ]
  }
}
C:\installPath\myProject\resources\app.asar\my.dll

我的electron-builder.json当前看起来如下:

{
  "productName": "myApp",
  "directories": {
    "output": "release/"
  },
    "files": [
        "**/*",
        "my.dll"
    ],
  "win": {
    "icon": "dist",
    "artifactName": "myApp.${ext}",
    "target": [
      "portable"
    ]
  }
}
有没有办法让my.dll包含在resources文件夹(或其他地方)而不是app.asar中


谢谢

如果将DLL文件保存在Dist文件夹中,则Electron builder工具将该文件包含在app.asar文件中

这是它的局限性,因为如果您尝试使用ffi模块或您自己编写的本机节点模块加载dll文件,那么它将不会从app.asar文件加载该文件。因此,您必须手动将dll文件保留在app.asar文件之外,或者将此副本设置作为生成系统的一部分。

解决方案1: 您应该能够使用“extraResources”参数执行此操作,将您的.dll放在resources文件夹下,然后在targeted dist下创建名为“extraResources”的配置参数

安装过程应将文件复制到应用程序的资源目录

解决方案2:
您可以从web服务器下载.dll文件,然后使用fs将其移动到所需位置。

谢谢!因此,如果不使用electron builder在app.asar中创建文件,就无法包含这些文件?我必须按照你的建议做一个单独的脚本来完成这一步?很好,额外的资源就是答案。谢谢