我有一个dll文件,我需要用它来处理由Electron项目中的Main进程启动的单独进程。
所以我想将此dll包含在我的电子项目中,并且我正在使用电子生成器来构建该项目。问题是我不知道如何在不将文件添加到asar程序包中的情况下包含该文件,而直接从单独的过程中无法获得该文件。当我使用app.getPath()
获取正在运行的实例的路径时,它将看起来像这样:
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包含在资源文件夹(或其他位置)中,而不是包含在app.asar中吗?
谢谢!
答案 0 :(得分:0)
如果将 DLL文件保留在Dist 文件夹中,则 Electron-builder 工具会将该文件包含在app.asar文件中。
这是有局限性的,因为如果您尝试使用ffi模块或您自己编写的本机节点模块加载dll文件,则它将不会从 app.asar 文件加载该文件。因此,您必须手动将 dll 文件保留在app.asar文件之外,或将此副本设置作为构建系统的一部分。
答案 1 :(得分:0)
解决方案1: 您应该能够使用“ extraResources”参数来执行此操作,将.dll放在resources文件夹下,然后在目标dist下创建名为“ extraResources”的配置参数。
安装过程应将文件复制到应用程序的资源目录
https://www.electron.build/configuration/contents#extraresources
解决方案2: 您可以从Web服务器下载.dll文件,然后使用fs将其移动到所需位置。