在Electron Builder中包含dll文件
我有一个dll文件,我需要用于一个单独的进程,该进程由我的Electron项目中的主进程启动 所以我想在我的electron项目中包含这个dll,我正在使用electron builder来构建这个项目。问题是我不知道如何在不将文件添加到asar包中的情况下包含该文件,而asar包是无法从单独的进程直接访问的。当我使用在Electron Builder中包含dll文件,electron,electron-builder,Electron,Electron Builder,我有一个dll文件,我需要用于一个单独的进程,该进程由我的Electron项目中的主进程启动 所以我想在我的electron项目中包含这个dll,我正在使用electron builder来构建这个项目。问题是我不知道如何在不将文件添加到asar包中的情况下包含该文件,而asar包是无法从单独的进程直接访问的。当我使用app.getPath()获取正在运行的实例的路径时,它将如下所示: { "productName": "myApp", "directories": { "out
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中创建文件,就无法包含这些文件?我必须按照你的建议做一个单独的脚本来完成这一步?很好,额外的资源就是答案。谢谢