win 系统,electron 如何集成绿色版flash播放器?
发布于 作者:苏南大叔 来源:程序如此灵动~书接上文,苏南大叔展示了electron
和flash
文件合作的可能性之后,想着对这个demo
继续改造改造,于是就有了本篇文章。主要内容是:如何自定义flash
插件位置。叙述背景是基于win
平台的。
精彩不容错过,欢迎查看:苏南大叔的最新有关"win系统,electron如何集成flash播放器"的文章。
背景描述
很多网上流传的文章,会告诉你需要找到pepflashplayer
这个dll
的真实位置。而在上一篇文章中,flash
插件的位置,是由electron
的万能函数自动获得的。
万能函数:
app.getPath('pepperFlashSystemPlugin');
win
下面的软件有32
位和64
位的说法,而且安装位置会有不同。那么flash
也不会有例外。所以有下面两个位置,可能是您的备选答案。当然,当您阅读本篇内容的时候,最终文件的名称可能会略有不同,毕竟版本号也许会发生变化。
C:\Windows\System32\Macromed\Flash\pepflashplayer64_29_0_0_113.dll
C:\Windows\SysWOW64\Macromed\Flash\pepflashplayer32_29_0_0_113.dll
其实说起来,这些路径还是蛮奇怪的:“32位目录下面,放置的是64位的dll。而64位目录下面,放置的是32位的dll”。事实上,对于大多数人来说,这个真正起作用的值应该是64
位的这个dll
,也就是放置在system32
目录下面的这个带64
字样的dll
。
C:\Windows\System32\Macromed\Flash\pepflashplayer64_29_0_0_113.dll
自定义插件路径之斜线写法
注意路径中的斜线的写法,如果按照window的习惯写\
的话,最终的结果就是flash
插件无法加载,实在是坑爹。必须把这个win
习惯的斜杆给换成另外一种/
,或者使用win
下面的双斜线\\
,才可以正常加载flash
。
var pepflashplayer ="";
pepflashplayer=`C:/Windows/System32/Macromed/Flash/pepflashplayer64_29_0_0_113.dll`; //ok
pepflashplayer=`C:\Windows\System32\Macromed\Flash\pepflashplayer64_29_0_0_113.dll`; //wrong
//pepflashplayer=app.getPath('pepperFlashSystemPlugin');
app.commandLine.appendSwitch('ppapi-flash-path',pepflashplayer);
自定义路径之分arch
加载dll
var pepflashplayer ="";
//pepflashplayer=app.getPath('pepperFlashSystemPlugin');
if (process.platform=="win32"){
if(process.arch == 'x64'){
pepflashplayer=`C:/Windows/System32/Macromed/Flash/pepflashplayer64_29_0_0_113.dll`;
}
else{
pepflashplayer=`C:/Windows/SysWOW64/Macromed/Flash/pepflashplayer32_29_0_0_113.dll`;
}
}
else{
//todo...
}
app.commandLine.appendSwitch('ppapi-flash-path',pepflashplayer);
自定义路径之分arch
加载项目目录下面的dll
实际上,我们可以把dll
复制到我们的代码根目录下面,而用户的电脑里面,是否安装了flash
就不用理会了。苏南大叔做了这个有益尝试,把上述路径中的两个dll都复制到electron
的根目录下面的dll
目录下面,然后删除了电脑中的flash
插件,连残余文件都利用360
残忍的粉碎了。对,很残忍的这么操作了。
苏南大叔利用path.join
改造一下上面的代码,对,一定要利用path.join
,不解释。不信的话,你们自己先去碰墙,回来再了解一下path.join
。
//...
const path = require('path')
var pepflashplayer ="";
//pepflashplayer=app.getPath('pepperFlashSystemPlugin');
if (process.platform=="win32"){
if(process.arch == 'x64'){
//pepflashplayer=`C:/Windows/System32/Macromed/Flash/pepflashplayer64_29_0_0_113.dll`;
pepflashplayer=path.join(__dirname, 'dll/pepflashplayer64_29_0_0_113.dll');
}
else{
//pepflashplayer=`C:/Windows/SysWOW64/Macromed/Flash/pepflashplayer32_29_0_0_113.dll`;
pepflashplayer=path.join(__dirname, 'dll/pepflashplayer32_29_0_0_113.dll');
}
}
else{
//todo..
}
app.commandLine.appendSwitch('ppapi-flash-path',pepflashplayer);
//...
主要的变化,就是我们调用的dll
文件,从系统安装的文件,变成了项目根目录下面绿色的dll
。事实证明,这样也是可以调用成功的。并且,打包成exe
之后,然后没有任何问题,可以正常加载flash
文件。
结论
额,绿色的electron和flash的集成版,就这么ok了,重点就是path.join
。好,本文就讲这么多吧,下一篇文章将会演示mac
系统的类似绿色版功能。敬请期待。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
为什么我用绿色版的打包成exe后无法加载插件,开发环境下可以正常加载。
看后续文章,有写的。和asar有关。