electron 如何区分是否为 asar 打包模式?
发布于 作者: 苏南大叔 来源: 程序如此灵动~
“成也
asar
,败也
asar
”。
asar
打包可以隐藏代码逻辑,减少文件数量,但是
asar
也带来了第三方资源加载失败的问题。在上一篇文字中,苏南大叔描述了:针对
electron-packager
,如何处理第三方资源。但是,也在文末留下了个伏笔,那就是:第三方资源定位位置做处理后,相关代码也要针对“是否是asar打包模式”进行区分处理。
本文中要描述的就是:在代码层面上,如何区分是否运行于
asar
模式下。
判断依据的理论基础
electron
程序的运行路径中,不能出现名为
app.asar
的文件夹名。这个论断,听起来应该是蛮新鲜的,但是大家可以自己亲身试一下看看,把自己写好的
electron
程序,放到一个名为
app.asar
的目录中,看看是否还能正常运行?
一定会显示功能异常的,连
atom
这种著名的
electron
程序,也出现了功能异常的情况。所以,苏南大叔推断:
app.asar
必然是个特殊的保留字。
不过上图中,
atom
的要加载的项目文件路径中有
app.asar
字样。而本文要说明的主旨意思是:程序本身的路径中,不能含有
app.asar
字样,稍稍有些区别。
判断是否为
asar
模式的标准
本文中的方法是苏南大叔自己想的,并不是从别的地方学习的成功经验。所以,如果您有更好的是否为
asar
打包的检测方式,欢迎给我留言。当然,有人会说:设置个开关参数,比如增加个变量
debug
之类的。
苏南大叔总结的这个检测方式就:是判断
__dirname
这个常量里面,是不是含有
app.asar
字样。在使用
electron-packager
打包后,根据是否使用
--asar
参数,打包出来的
release
包,是可能会出现两种情况的,一种是有
asar
的包,另外一种是没有
asar
包。但是,这种情况下,如果设置了
debug
变量的话,都应该是
false
,所以无法区分是否为
asar
,进而对第三方资源的调用产生影响。
根据上一条目中的内容,苏南大叔推断:如果
__dirname
出现了
app.asar
的字样的话,那应该可以确认是属于
asar
模式了。否则,程序功能会是异常的。很有可能,程序本身都不应该能够运行起来。
代码基本逻辑:如果是
asar
模式的话,就到
app.asar
上一层去寻找相关的第三方资源。代码类似如下:
所以判断是否是asar模式的标准就是:
相关文章
- https://newsn.net/say/electron-dirname-static.html
- https://newsn.net/say/electron-packager-extra-resource.html
结论
electron
集成
swf
播放器绿色版,为什么打包之后就不能正常加载插件的谜团,是不是可以解开了呢?
更多
electron
的经验文字,请点击查看苏南大叔的博客文章:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
感谢分享,这个asar好麻烦,项目依赖了java包,打包后java.import方法就无法工作,现在的解决方法是直接将 asar: false 了。
第三方依赖 和 asar是冲突的
electron 打包后flash用不了
自己检查路径,dll文件或者so文件是否在正确的位置上出现了
发文乏味范围仍然为人父
震惊
666666
不知道如何配置才能不使用asar打包?这样打包一些动态库访问不到
看文档,不同的打包工具参数不一样
electron-vue 打包时静态资源如何设置呢
目前相关文字还在发布队列中...
666
在asar包里不管我用什么方式,都读不到路径里的文件
那就考虑一下,不要打包asar,确实比较容易出问题。
南叔您可以讲下使用electron-builder如何处理打包flash的问题么,我的项目使用electron-vue,目前还没有好的办法解决打包后flash无法加载插件的问题,不知道应该改哪里
你可以看看 electron.build 这个网站。目前还没有你想知道的 electron-build 的 asar 相关文章。
南叔你好,我是用的build来打包一个electron-vue项目的flash,
我在package.json的script中改了下build
"build": "node .electron-vue/build.js && electron-builder --asar --ignore=res/ --extra-resourse=res/",
显示报错了,想知道如果是build的话,怎么改下,还有您文中判断asar代码应该加到何处呢,刚刚接触electron,请见谅
builder的参数里面,找找看看。
我的就是加载flash,本地可以,打开后显示无法加载插件。。
使用electron在程序中想要创建新的html文件并使用BrowserWindow.loadURL去加载,程序在Ubuntu下面运行的时候没有问题。但是经过electron-builder打包成exe文件,在Windows平台安装运行的时候,会报错说那个html文件在app.asar文件中找不到,请问该如何解决呢
electron 用asar打包app后读取不到flash
那就不要打包到asar里面
希望能看到我急需的
看看怎么处理asar路径
看看怎么处理asar路径
electron 打包后flash用不了
http://newsn.com.cn/say/electron-detect-asar.html
electron 可以避免网页重新打开新的窗口不?
可以