我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

书接上文,苏南大叔展示了electronflash文件合作的可能性之后,想着对这个demo继续改造改造,于是就有了本篇文章。主要内容是:如何自定义flash插件位置。叙述背景是基于win平台的。

苏南大叔:win 系统,electron 如何集成绿色版flash播放器? - win系统,electron如何集成绿色版flash播放器?
win 系统,electron 如何集成绿色版flash播放器?(图9-1)

精彩不容错过,欢迎查看:苏南大叔的最新有关"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

苏南大叔:win 系统,electron 如何集成绿色版flash播放器? - flash_32
win 系统,electron 如何集成绿色版flash播放器?(图9-2)

苏南大叔:win 系统,electron 如何集成绿色版flash播放器? - flash_64
win 系统,electron 如何集成绿色版flash播放器?(图9-3)

其实说起来,这些路径还是蛮奇怪的:“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);

苏南大叔:win 系统,electron 如何集成绿色版flash播放器? - flash_demo_sorry
win 系统,electron 如何集成绿色版flash播放器?(图9-4)

自定义路径之分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);

苏南大叔:win 系统,electron 如何集成绿色版flash播放器? - flash_demo_ok2
win 系统,electron 如何集成绿色版flash播放器?(图9-5)

自定义路径之分arch加载项目目录下面的dll

实际上,我们可以把dll复制到我们的代码根目录下面,而用户的电脑里面,是否安装了flash就不用理会了。苏南大叔做了这个有益尝试,把上述路径中的两个dll都复制到electron的根目录下面的dll目录下面,然后删除了电脑中的flash插件,连残余文件都利用360残忍的粉碎了。对,很残忍的这么操作了。

苏南大叔:win 系统,electron 如何集成绿色版flash播放器? - uninstall
win 系统,electron 如何集成绿色版flash播放器?(图9-6)

苏南大叔利用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文件。

苏南大叔:win 系统,electron 如何集成绿色版flash播放器? - dll1
win 系统,electron 如何集成绿色版flash播放器?(图9-7)

苏南大叔:win 系统,electron 如何集成绿色版flash播放器? - dll2
win 系统,electron 如何集成绿色版flash播放器?(图9-8)

苏南大叔:win 系统,electron 如何集成绿色版flash播放器? - dll3
win 系统,electron 如何集成绿色版flash播放器?(图9-9)

结论

额,绿色的electron和flash的集成版,就这么ok了,重点就是path.join。好,本文就讲这么多吧,下一篇文章将会演示mac系统的类似绿色版功能。敬请期待。

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

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

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