electron 如何将任意资源打包的方法步骤
如何打包资源
只想写个图形小工具,本质上还是调用写好的 java 程序,因为我觉得在命令行里面来回切目录,复制路径等操作实在是太麻烦了。
那么我现在已经搞定了如何从 electron 的 js 事件里获得文件路径,我也搞定了如何在 electron 的 main.js 里面创建新的进程执行指令,那么如何使用到打包好的 jar 包或者其他资源呢?
直接看下 packages.json 里面吧。
{ "name": "....", "version": "1.0.0", "description": "", "main": "main.js", "scripts": { "start": "export FAVOR=debug && electron .", "pack": "electron-packager ./ yourAppName --platform=darwin --arch=x64 --app-version=0.0.1 --app-bundle-id=.xxxx.yourAppName --out=build --overwrite --extra-resource='./extraResources'" }, "build": { "extraResources": [ "./extraResources/" ] }, }
需要注意的是 build 里面加了一个 extraResources,,通过 electron-packager 打包的参数里面也加上一个 --extra-resource='./extraResources'
然后打包的时候就可以把你想要的任何文件打包进去了,jar 也好,python 脚本也好。
如何引用资源
需要注意的是,debug 运行和 release 运行是不一样的,这里,我们就需要一个东西来在运行时区分,我现在是 debug 还是 release。
注意上面的 json 脚本中,有一个 export FAVOR=debug,这个相当于在 debug 运行的时候加入了一个环境变量。
怎么读取环境变量呢?在 main.js 里面这样读取
console.log("favor: " + process.env.FAVOR)
接下来就是区分运行时来获取资源路径了。
function getResPath() { if (isDebug) { return "./extraResources" } else { return process.resourcesPath + "/extraResources" } }
仅此记录一下,给可能需要的人。
electron打包的一些坑
我们知道使用electron打包的时候设置asar为true,electron-builder会智能的把一些native的程序不打包到app.asar里面,我碰到一个很奇怪的问题,周五的时候需要使用语音的格式转换,用到了amrToMp3和ffmpeg-static这两个库,其中amrToMp3的主要代码
const exec = require('child_process').exec const path = require('path') const ffmpeg = require('ffmpeg-static') const ffmpegPath = ffmpeg.path function amrToMp3(filepath, outputDir = './src/mp3') { return new Promise((resolve, reject) => { const basename = path.basename(filepath) const filename = basename.split('.')[0] const etc = basename.split('.')[1] if (etc != 'amr') { console.log('please input a amr file') return } const cmdStr = `${ffmpegPath} -y -i ${filepath} ${outputDir}/${filename}.mp3` exec(cmdStr, (err, stdout, stderr) => { if (err) { console.log('error:' + stderr) reject('error:' + stderr) } else { resolve(`${outputDir}/${filename}.mp3`) console.log(`transform to mp3 suess! ${filepath}->${outputDir}/${filename}.mp3`) } }) }) }
其中用到了exec这个命令,ffmpegPath打包后基本是/app.asar/src/node_modules/ffmpeg-static/bin/darwin/x64/ffmpeg,打包后运行提示了can not found /app.asar/src/node_modules/ffmpeg-static/bin/darwin/x64/ffmpeg 很尴尬,我去解压了,明明是存在的,后来我去看了类似的一个库node-notifier,发现用的是execFile这个命令,然后我修改了一下,结果。。。。居然就可以了。这个地方谁知道原因,求解答。。。。
修改之后的程序代码
var ffmpegPath = path.join( __dirname, 'bin', platform, arch, platform === 'win32' ? 'ffmpeg.exe' : 'ffmpeg' ) execFile(ffmpegPath, ['-y', '-i', inputPath, cmdStr], function (err, stdout, stderr) { if (err) { console.log('error:' + stderr); reject('error:' + stderr); } else { resolve(outputDir + '/' + filename + '.mp3'); console.log('transform to mp3 suess! ' + filepath + '->' + outputDir + '/' + filename + '.mp3'); } });
到此这篇关于electron 如何将任意资源打包的方法步骤的文章就介绍到这了,更多相关electron 任意资源打包 内容请搜索狼蚁SEO以前的文章或继续浏览狼蚁网站SEO优化的相关文章希望大家以后多多支持狼蚁SEO!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程