首页 > 其他分享 >electron集成第三方视频会议(整个目录资源含exe)进来,开发/打包坑点集锦

electron集成第三方视频会议(整个目录资源含exe)进来,开发/打包坑点集锦

时间:2024-04-11 15:34:27浏览次数:25  
标签:info exe 坑点 electron let 集锦 logger resources

场景:electron做个welink那种会议功能,需要集成第三方去进入会议,需要做的是在electron里面打开这个通道

对方给了一个文件夹,里面含有.exe,需要调用shell命令去打开这个exe传些参数

1.把整个会议文件夹放在/resources下

主要是记住三个环境变量的路径方法(因为在electron中所以得看electron的api)

app.isPackaged //代表是否是打包的
app.getAppPath() //开发环境直接到项目工程的*/electron
app.getPath('exe')//这是指向打包后的路径到项目开启的*/程序.exe
process.resourcesPath //这个路径会指向资源文件resources
调试需要在日志文件中去调试

 

function initMeetting(){
  logger.info('[ 进入会议方法中1 ]',app.getAppPath())
  
  const resourcesPath = process.resourcesPath;
  logger.info('[ 进入会议方法中1-2 ]',resourcesPath)
  let thirdPartyDir = './resources/hst_meetting/FastMeeting.exe';
  let executablePath = join(app.getAppPath(), thirdPartyDir);
  let buildPath = join(process.resourcesPath, './hst_meetting/FastMeeting.exe');
  logger.info('[ 进入会议方法中1-3 ]',buildPath)
  let path:string = app.isPackaged ? buildPath : executablePath;
  //定义shell命令参数
  let uname = '**';
  let unameValue = '*';

  let shellCommand = `start ${path} ${uname} ${unameValue}`;
  // 执行 shell 命令
  logger.info('[ 进入会议方法中 ]',shellCommand )
  exec(shellCommand, (error, stdout, stderr) => {
    if (error) {
      logger.info('[ 进入会议方法中2 ]',error)
      console.error(`Error executing command: ${error}`);
      return;
    }
    logger.info('[ 进入会议方法中3 ]',stdout)
    logger.info('[ 进入会议方法中4 ]',stderr)
    console.log(`stdout: ${stdout}`);
    console.error(`stderr: ${stderr}`);
  });
}
import { exec } from 'child_process';

需要注意的是exec在node.js中可以用相对路径去打开shell文件,但是在electron中只能用绝对路径打开(相对路径试了下没试出来)

打包配置需要注意electron-builder.yml

https://cn.electron-vite.org/guide/distribution

extraResources:
  - from: resources/hst_meetting
    to: hst_meetting
asarUnpack:
  - resources/**
  - hst_meetting/**
asarUnpack代表的是打包不加密,原文件
extraResources是打包额外资源配置项,配置extraResources后,electron-builder在打包时会将指定文件夹复制到打包后应用程序的根目录/resources文件夹下(Windows),或者Content/resources文件夹下(MacOS)
 

标签:info,exe,坑点,electron,let,集锦,logger,resources
From: https://www.cnblogs.com/lsc-boke/p/18129281

相关文章

  • ThreadPoolExecutor线程池解析
    ThreadPoolExecutor线程池解析一、ThreadPoolExecutor常见参数jdk中Executors提供了几种常用的线程池,底层都是ThreadPoolExecutor。publicThreadPoolExecutor(intcorePoolSize,//核心线程数intmaximumPoolSize,//最大线程数......
  • 要使用PowerShell命令将ESD映像转换为FFU映像,您可以借助dism.exe工具和PowerShell脚本
    要使用PowerShell命令将ESD映像转换为FFU映像,您可以借助dism.exe工具和PowerShell脚本来完成。下面是一个示例PowerShell脚本:powershellCopyCode#定义输入和输出文件路径$ESDFile="C:\path\to\install.esd"$WimFile="C:\Temp\install.wim"$FFUFile="C:\path\to\insta......
  • 使用PowerShell命令将WIM映像转换为FFU映像,您可以使用dism.exe工具结合PowerShell脚本
    使用PowerShell命令将WIM映像转换为FFU映像,您可以使用dism.exe工具结合PowerShell脚本来完成。以下是一个示例PowerShell脚本:powershellCopyCode#定义输入和输出文件路径$WimFile="C:\path\to\install.wim"$FFUFile="C:\path\to\install.ffu"#挂载WIM映像$MountDir......
  • py打包exe
    #运行命令:pyinstaller-F.\pack_exe.py-i .\day.ico -F打包所有,-i设置图标##pipinstallpyinstaller####豆瓣源:-ihttp://pypi.douban.com/simple/--trusted-hostpypi.douban.com————————————#pack_exe.pyimportrequestsimportre#.表示任......
  • 一个简单的 indexedDB 应用示例
    现代浏览器中会包含indexedDB,这是一个功能比localStorage更加强大的数据库引擎,其API描述详见W3规范:IndexedDB如下是一个简单的应用示例:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content=......
  • E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to regist
    kaggle里面导入pytorch_lightning时发出的警告信息复现代码(其余是2024年3月下旬kaggle的默认环境):!pipinstall-Ueinops==0.7.0sacred==0.8.5pytorch_lightning==1.1.4torchtext==0.6.0pyarrow==15.0.0importpytorch_lightning结果(发出警告信息):2024-04-0812:59:19.0......
  • JUC:ThreadPoolExecutor线程池的使用方法
    文章目录ThreadPoolExecutor线程池状态构造方法Executors工厂方法newFixedThreadPoolnewCachedThreadPoolnewSingleThreadExecutor提交任务方法关闭任务方法ThreadPoolExecutor线程池状态线程池用高三位表示状态,第一位为符号位。TERMINATED>TIDYING>STOP>......
  • 并发工具类:ExecutorService、Future、CountDownLatch与Semaphore(第一章)
    目录一、引言ExecutorService与Future:优雅的任务提交与结果获取CountDownLatch:精确的线程同步点Semaphore:资源访问的流量控制器总结二、ExecutorService定义与接口概述生命周期管理高级特性与最佳实践使用ExecutorService时的常见注意事项与最佳实践建议一、引言......
  • Spring Data JPA应用之动态查询JpaSpecificationExecutor
    JPA提供了基于准则查询的方式即Criterial查询——Specification接口。该接口定义了一个toPredicate方法用例构造查询条件。在SpringBoot对SpringDataJPA的支持案例的基础上对该接口实操进行探讨。1)数据访问接口必须实现JpaSpecificationExecutor......
  • @JSONField 坑点 结论:若属性是私有的,必须有set*方法。否则无法反序列化。
    @JSONField坑点结论:若属性是私有的,必须有set*方法。否则无法反序列化。@JSONField坑点结论:若属性是私有的,必须有set*方法。否则无法反序列化。原因:主要原因是JSONField注解是通过反射来操作对象的属性的,而在Java类中一般情况下,字段是私有的,不能直接访问。所以需要......