electron项目构建打包缺少dll文件的问题解决办法

2023-05-16

      最近,在做electron项目中,使用了第三方dll,开发环境运行一切正常,可是当我们打包,最后生成的可执行程序再执行,发现调用dll总是不成功,猜测是少了dll。

      后来发现果真是路径问题,我们开发环境,可以通过path.resolve()或着path.join()来指定任意目录下的dll,但是问题来了,到了构建生产环境的时候,我们想象的目录并没有按照开发环境的目录来进行打包了。

      很明显的一条就是,我们在根目录下的package.json等文件就没有build到项目的根目录下。构建的时候,只是把相关的html,css,js等文件进行了合并压缩。而dll并不在这些文件之列,自然就不会打包到项目中了。

      既然问题明确了,那就需要解决这个打包除html,css,js等文件之外的文件问题了。

      好在package.json配置build节点下有这么一个配置项:extraResources:[{from:'',to:''}],我们只需要将我们需要打包的文件加入到这个配置中即可。

     比如,我把dll文件放在了static目录下,这样呢,最后build的时候,不会生成这个目录,但是会有一个resources目录,而这个目录似乎就是根目录的一个软链接。代码中,可以这样写:

var dllpath = path.resolve(__dirname,"../../../static/visadll.dll");
if(process.env.NODE_ENV == 'production'){
  dllpath = path.resolve(__dirname,"../../../visadll.dll");
}

    项目结构如下所示: 

    |-static/
    |-src/renderer/components/ 

    我的vue文件代码所在位置的上三级目录与static的位置是同一级。

    这样,package.json的配置项build下的extraResouces配置如下:

    

    这些需要的文件会打包到根目录下的resources目录下。这个目录很奇怪的地方在于,它虽然是根目录下的resources,但是它在path.resolve()解析到根目录即可,他会自动包含resources目录。

    如下图所示,我们经过新的配置并构建,构建完成,打包后项目根目录下的resources目录就会包含我们的dll文件了。

    

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

electron项目构建打包缺少dll文件的问题解决办法 的相关文章

  • ws2_32.lib 与 libws2_32.a,有什么区别以及如何将 libws2_32 链接到 NB 项目?

    我使用 NetBeans Windows 和 Cygwin 以及 g 编译器 我正在研究 Windows Sockets 2 我所做的一切都是用 MS 编写的manual http msdn microsoft com en us libr
  • 获取DLL函数的内存地址

    我想知道是否有可能 使用 C 和 WindowsAPI 是否有一个函数可以让我获得 dll 中函数的 32 位 我认为 内存地址 例如 如何获取 kernel32 dll 中 Beep 的 32 位 xxxxxxxx 地址 其次 如果我在汇
  • 如何将参数传递给 DLL 初始化(例如,通过 LoadLibrary 加载时)?

    如何将参数传递给通过 LoadLibrary 加载的 DLL 的初始化函数 有可能吗 也就是说 无需求助于某种导出函数或共享内存 没有直接的方法 最简单的可能是通过环境变量 它们可以在调用之前轻松设置LoadLibray with sete
  • Visual Studio 找不到引用

    我正在处理另一个人移交的一些应用程序 我必须在其中记录需求 构建和部署流程 这里的问题是 Visual Studio 2005 抛出很多错误 因为它找不到 dll 的引用 这显然不会让 VS 构建该项目 在该人的计算机上一切正常 但在我的计
  • python37.dll 未链接到可执行文件中

    我用 python 扩展了 c 但可执行文件无法在未安装 python 的系统上运行 include C python h int main Py Initialize PyRun SimpleString print hello worl
  • android可以在本机模式下从sd卡加载dll吗

    我想把我写的程序移植到android上 该程序是在 Windows 和 Linux 上用 C 编写的 该程序使用 dll 作为插件架构 通过下载程序从特定文件夹加载的 dll 可以将新插件添加到程序中 我的问题是 是否可以将为 androi
  • 如何在 Visual C++ 中创建 ActiveX DLL

    是否有在 Visual Studio 2008 C 中创建 ActiveX DLL 的教程 参考 我有一个使用 DLLRegisterServer UnregisterServer 构建的 DLL 并且已注册 但我在弄清楚使用什么名称来引用
  • Inno Setup 无法导入 DLL

    我没有运气将 Delphi DLL 导入 Inno Setup Unicode 该DLL有一个简单的过程 procedure Foo stdcall begin end exports Foo 该 DLL 包含在安装程序源中 并添加到文件列
  • AutoCAD 插件开发示例

    我对开发 AutoCAD 插件感兴趣 并试图了解几种不同类型的 AutoCAD 插件文件之间的关系 随 AutoCAD 插件一起提供的托管 DLL ARX 文件 https fileinfo com extension arx附带 Auto
  • 如何在 Windows 中将 Electron 应用程序部署为可执行文件或可安装文件?

    我想生成一个独特的 exe文件来执行应用程序或 msi安装应用程序 怎么做 您可以使用以下方式打包您的程序电子包装机 https github com maxogden electron packager然后使用以下命令构建单个安装 EXE
  • 制作 C# 项目 DLL 和 EXE

    我正在开发一个项目 需要有一个可执行文件以便用户可以运行配置界面和一个可以嵌入其他项目以使用其他一些功能的 DLL 有没有办法让 Visual Studio 同时生成可执行文件和 DLL 而不是每次都手动切换 我同意 TJMonk15 的观
  • 通过键盘快捷键电子应用程序禁用重新加载

    我想实现一个绑定到的自定义操作Command R电子应用程序中的键盘快捷键 我克隆了electron quick start回购 并改变了main js文件到此 const app Menu MenuItem BrowserWindow r
  • 具有桌面应用程序安全性的 OAuth2

    我有一个 Electron 应用程序 它基本上是一个 Google Drive 客户端 我打算使用 OAuth 2 但是 Google API 要求我在生成 client secret 的地方注册我的应用程序 由于这是一个桌面应用程序 因此
  • Electron Autoupdater 与私有 GitHub 存储库?

    我已经使用 PRIVATE GitHub Repository 作为发布电子应用程序的提供者实现了 Electron AutoUpdater 现在 我可以使用 GitHub 存储库发布它 但是每当 AutoUpdater 尝试从 GitHu
  • 警告:“沙箱”不在已知选项列表中,但仍传递给 Electron/Chromium

    我在用Linux Mint 20 and vscode 1 52 1 My xsession errors文件显示Warning sandbox is not in the list of known options but still p
  • 从单个应用程序中的多个线程调用 dll 函数是否安全?

    我正在 Delphi 2009 中编写一个服务器应用程序 它实现了多种类型的身份验证 每种身份验证方法都存储在单独的 dll 中 第一次使用身份验证方法时 会加载适当的 dll 仅当应用程序关闭时 DLL 才会被释放 在服务器线程 连接 之
  • Powershell 调用程序集委托

    我有一个用于过程控制应用程序的 dll 程序集 我在我的内部使用 load电源外壳 script 该DLL包含我需要使用的委托类型 委托名称是 X Y Delegate 我在该 DLL 中有另一个方法 应该这样调用 Method deleg
  • 在 matlab 代码中使用 dll 文件

    我需要使用 Matlab 中由 dll 文件定义的函数 我有一个例子 那个家伙将 dll 转换为 mexw32 文件 但我知道我是如何做到这一点的 我尝试使用加载库但它没有创建任何文件 我怎样才能做到这一点 loadlibrary http
  • 资源文件是否编译为 UNICODE 或 ANSI 代码页?

    首先 如果这个问题已经被回答了一百次了 我深表歉意 噢 但我的搜索显然很糟糕 因为我没有运气回答这个基本问题 EXE DLL中的资源是如何存储的 作为 UNICODE UCS 2 Windows 本机内部字符格式 还是使用资源块的代码页作为
  • 在 C# 中使用“C”dll [重复]

    这个问题在这里已经有答案了 可能的重复 如何从 C ASP NET 网页调用非托管 C C 代码 https stackoverflow com questions 720004 how do i call unmanaged c c co

随机推荐