Asar is a simple extensive archive format, it works like tar
that concatenates all files together without compression, while having random access support.
Asar(Atom Shell Archive Format
(Atom外壳存档格式))是一种简单的扩展存档格式,它的工作原理是tar
将所有文件连接在一起而不进行压缩,同时具有随机访问支持。
特征
1)支持随机访问
2)使用JSON存储文件信息
3)编写解析器非常容易
安装
This module requires Node 10 or later.
$ npm install asar -g
使用说明
$ asar --help
Usage: asar [options] [command]
Commands:
pack|p <dir> <output>
create asar archive
list|l <archive>
list files of asar archive
extract-file|ef <archive> <filename>
extract one file from archive
extract|e <archive> <dest>
extract archive
Options:
-h, --help output usage information
-V, --version output the version number
提起asar
,就应该提起resources
目录。这个目录是asar
的主战场,里面会有个electron.asar
的文件,这个是系统自带的。而如果您的打包命令里面没有指定asar
参数的话,你的默认代码目录就会是个app
文件夹,而不是app.asar
。
当然,你可以使用asar
命令,把app
目录打包成app.asar
文件,然后删除app
目录。但是这样的话,然并卵,你的最终的文件可能会因此不能正常运行。正确的做法是:你使用electron-packager
打包的时候,就必须指定好参数--asar
,这样就可以生成个app.asar
文件了。
解压app.asar
两条命令任选其一
asar e app.asar <解压后的目录>
asar extract app.asar <解压后的目录>
我们可以修改 <解压后的目录> 里面的文件,然后,我们再进行打包即可。
打包app.asar
两条命令任选其一,打包asar
之后,再看效果。
asar p <被打包的目录> app.asar
asar pack <被打包的目录> app.asar
结论
asar
打包仅仅是个非常初级的加密方式,解密也非常容易。所以,还是把你的代码,使用webpack
类似的前端构建工具,进行代码加密混淆,才是正途。