如何打包资源
只想写个图形小工具,本质上还是调用写好的 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=com.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 success! ${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 success! ' + filepath + '->' + outputDir + '/' + filename + '.mp3'); } });
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 好薇2024《兵哥哥》1:124K黄金母盘[WAV+CUE]
- 胡歌.2006-珍惜(EP)【步升大风】【FLAC分轨】
- 洪荣宏.2014-拼乎自己看【华特】【WAV+CUE】
- 伊能静.1999-从脆弱到勇敢1987-1996精选2CD【华纳】【WAV+CUE】
- 刘亮鹭《汽车DJ玩主》[WAV+CUE][1.1G]
- 张杰《最接近天堂的地方》天娱传媒[WAV+CUE][1.1G]
- 群星《2022年度发烧天碟》无损黑胶碟 2CD[WAV+CUE][1.4G]
- 罗文1983-罗文甄妮-射雕英雄传(纯银AMCD)[WAV+CUE]
- 群星《亚洲故事香港纯弦》雨果UPMAGCD2024[低速原抓WAV+CUE]
- 群星《经典咏流传》限量1:1母盘直刻[低速原抓WAV+CUE]
- 庾澄庆1993《老实情歌》福茂唱片[WAV+CUE][1G]
- 许巍《在别处》美卡首版[WAV+CUE][1G]
- 林子祥《单手拍掌》华纳香港版[WAV+CUE][1G]
- 郑秀文.1997-我们的主题曲【华纳】【WAV+CUE】
- 群星.2001-生命因爱动听电影原创音乐AVCD【MEDIA】【WAV+CUE】