如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

“成也asar,败也asar”。asar打包可以隐藏代码逻辑,减少文件数量。但是asar也带来了第三方资源加载失败的问题,在上一篇文字中,苏南大叔描述了:针对electron-packager,如何处理第三方资源。但是,也在文末留下了个伏笔,就是:第三方资源定位位置做处理后,相关代码也要针对“是否是asar打包模式”进行区分处理。

判断依据的理论基础

electron程序的运行路径中不能出现名为app.asar的文件夹名,这个论断,听起来应该是蛮新鲜的,但是大家可以自己亲身试一下看看,把自己写好的electron程序,放到一个名为app.asar的目录中,看看是否还能正常运行?一定会是功能异常的。连atom这种著名的electron程序,也出现了功能异常的情况。所以,苏南大叔推断:app.asar必然是个特殊的保留字。

electron代码如何区分是否为asar打包模式 - atom_error

electron代码如何区分是否为asar打包模式(图3-1)

不过上图中,atom的要加载的项目文件路径中有app.asar字样。而本文要说明的主旨意思是:程序本身的路径中,不能含有app.asar字样,稍稍有些区别。

判断是否为asar模式的标准

本文中的方法是苏南大叔自己想的,并不是从别的地方学习的成功经验。所以,如果您有更好的是否为asar打包的检测方式,欢迎给我留言。当然,有人会说:设置个开关参数,比如增加个变量debug之类的。

苏南大叔总结的这个检测方式就:是判断__dirname这个常量里面,是不是含有app.asar字样。在使用electron-packager打包后,根据是否使用--asar参数,打包出来的release包,是可能会出现两种情况的,一种是有asar的包,另外一种是没有asar包。但是,这种情况下,如果设置了debug变量的话,都应该是false,所以无法区分是否为asar,进而对第三方资源的调用产生影响。

electron代码如何区分是否为asar打包模式 - app

electron代码如何区分是否为asar打包模式(图3-2)

根据上一条目中的内容,苏南大叔推断:如果__dirname出现了app.asar的字样的话,那应该可以确认是属于asar模式了。否则,程序功能会是异常的。很有可能,程序本身都不应该能够运行起来。

electron代码如何区分是否为asar打包模式 - asar错误之mac

electron代码如何区分是否为asar打包模式(图3-3)

代码基本逻辑:如果是asar模式的话,就到app.asar上一层去寻找相关的第三方资源。代码类似如下:

newsn.net:这里是【评论】可见内容

所以判断是否是asar模式的标准就是:

newsn.net:这里是【评论】可见内容

结论

electron集成swf播放器绿色版,为什么打包之后就不能正常加载插件的谜团,是不是可以解开了呢?

更多electron的经验文字,请点击查看苏南大叔的博客文章:https://newsn.net/tag/electron/

  【electron】秘籍文章入口,仅传授于有缘之人  electron    asar

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

苏南大叔需要你的支持

打赏任意金额,发送截图到邮箱 shang@newsn.net ,可以领取精选回馈如下(任选其一):
  • 《前端视频教程大礼包》一套
  • 《wordpress精选皮肤》一套
  • 《dedecms织梦精选模板》一套
感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!

岁月静好

关注互联网发展,关注苏南大叔的《程序如此灵动~》博客
本文章来自:程序如此灵动~
博客地址为:https://newsn.net/
原文地址为:https://newsn.net/say/electron-detect-asar.html
上一篇好文:electron-packager如何正确处理第三方资源的打包问题
下一篇好文:mac系统,利用parallels安装win10虚拟机

如果您转载了本文章,出于某种原因,并没有注明作者或者出处。
在这里,苏南大叔也表示理解和支持。因为苏南大叔深深地明白:
您会在合适的时机,合适的地方,给本博客一个外链。对吧?
您若开心,便是安好!岁月静好,但愿世界和平,没有纷争~