在 Electron Builder 中包含 dll 文件
Include dll file in Electron Builder
我有一个 dll 文件,我需要将其用于由我的 Electron 项目中的主进程启动的单独进程。
所以我想将这个 dll 包含在我的 electron 项目中,我正在使用 electron-builder 来构建项目。问题是我不知道如何在不将文件添加到 asar 包中的情况下包含该文件,这是无法直接从单独的进程访问的。当我使用 app.getPath()
获取 运行 实例的路径时,它看起来像这样:
C:\installPath\myProject\resources\app.asar\my.dll
我的电子-builder.json目前是这样的:
{
"productName": "myApp",
"directories": {
"output": "release/"
},
"files": [
"**/*",
"my.dll"
],
"win": {
"icon": "dist",
"artifactName": "myApp.${ext}",
"target": [
"portable"
]
}
}
有什么方法可以让 my.dll 包含在资源文件夹(或其他地方)而不是 app.asar 中?
谢谢!
如果您将 DLL 文件保存在 Dist 文件夹中,Electron-builder 工具会将该文件包含到 app.asar 文件。
这是它的局限性,因为如果您尝试使用 ffi 模块或您自己编写的本机节点模块加载 dll 文件,那么它将不会从 app.asar 文件。因此您必须手动将 dll 文件保留在 app.asar 文件之外,或者将此副本设置作为构建系统的一部分。
解决方案1:
您应该可以使用 "extraResources" 参数来完成此操作,将您的 .dll 放在资源文件夹下,然后在目标 dist 下创建名为 "extraResources" 的配置参数。
安装过程应该将文件复制到应用程序的资源目录
https://www.electron.build/configuration/contents#extraresources
方案二:
您可以从 Web 服务器下载 .dll 文件,然后使用 fs 将其移动到所需位置。
我有一个 dll 文件,我需要将其用于由我的 Electron 项目中的主进程启动的单独进程。
所以我想将这个 dll 包含在我的 electron 项目中,我正在使用 electron-builder 来构建项目。问题是我不知道如何在不将文件添加到 asar 包中的情况下包含该文件,这是无法直接从单独的进程访问的。当我使用 app.getPath()
获取 运行 实例的路径时,它看起来像这样:
C:\installPath\myProject\resources\app.asar\my.dll
我的电子-builder.json目前是这样的:
{
"productName": "myApp",
"directories": {
"output": "release/"
},
"files": [
"**/*",
"my.dll"
],
"win": {
"icon": "dist",
"artifactName": "myApp.${ext}",
"target": [
"portable"
]
}
}
有什么方法可以让 my.dll 包含在资源文件夹(或其他地方)而不是 app.asar 中?
谢谢!
如果您将 DLL 文件保存在 Dist 文件夹中,Electron-builder 工具会将该文件包含到 app.asar 文件。
这是它的局限性,因为如果您尝试使用 ffi 模块或您自己编写的本机节点模块加载 dll 文件,那么它将不会从 app.asar 文件。因此您必须手动将 dll 文件保留在 app.asar 文件之外,或者将此副本设置作为构建系统的一部分。
解决方案1: 您应该可以使用 "extraResources" 参数来完成此操作,将您的 .dll 放在资源文件夹下,然后在目标 dist 下创建名为 "extraResources" 的配置参数。
安装过程应该将文件复制到应用程序的资源目录
https://www.electron.build/configuration/contents#extraresources
方案二: 您可以从 Web 服务器下载 .dll 文件,然后使用 fs 将其移动到所需位置。