electron加载.bat文件修改注册表

需求:electron加载外部脚本文件修改注册表

分析:1.如何加载外部bat文件

           2.如何实现打包

解决历程:

step1:

electron官网API:https://electronjs.org/docs,没有找到合适的方法加载bat文件,故而想到node实现:http://nodejs.cn/api/child_process.html#child_process_spawning_bat_and_cmd_files_on_windows

step2: 

根据官网API(图1)

图1

故而利用child_process的spawn方法:(图2)

图2

'/c':command;

'batpath': bat脚本文件(与该代码同级)

‘address’:传入bat的参数

step3: 

本文利用electron-builder实现打包流程,electron-builder中利用asar将app文件夹打包至asar虚拟文件夹下面,然而

“asar 包在 Node API 下的应用尽可能的趋向于真实的目录结构,但仍有一些底层 Node API 我们无法保证其正常工作。”

"大部分 fs API 可以无需解压即从 asar 档案中读取文件或者文件的信息,但是在处理一些依赖真实文件路径的底层系统方法时,Electron 会将所需文件解压到临时目录下,然后将临时目录下的真实文件路径传给底层系统方法使其正常工作。";

”Node 中有一些可以执行程序的 API,如 child_process.exec,child_process.spawn 和 child_process.execFile 等, 但只有 execFile 可以执行 asar 包中的程序。因为 exec 和 spawn 允许 command 替代 file 作为输入,而 command 是需要在 shell 下执行的. 目前没有 可靠的方法来判断 command 中是否在操作一个 asar 包中的文件,而且即便可以判断,我们依旧无法保证可以在无任何 副作用的情况下替换 command 中的文件路径。“

瞧见了吧,spawn无法读取到asar下面的子文件,需要将.bat文件在打包时提出,解压到非asar目录下。于是乎,查阅electron-builder API,找到asarUnpack参数:

asarUnpack Array | String - A glob patterns relative to the app directory, which specifies which files to unpack when creating the asar archive.

上代码:(图3)

图3

注意:本文app目录结构为(图4),故在config中配置asarUnpacked: "**/*.bat"参考(图5

图4


图5

打包后的目录结构为:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容