electron如何集成绿色版flash插件?跨平台终极版
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
electron是支持跨平台的,而flash本身也是跨平台的。但是,flash插件各个平台确不是通用的,在本文中,将对前几篇文章进行个总结,跨平台方面,就选择个最有代表性的mac和win,其他的系统平台,大家可以自行补充。本文的主题是:electron如何集成绿色版flash插件?跨平台终极版
。
结合前几篇文章内容,苏南大叔又把代码改造了一下,集合了win版和mac版的相关内容。经过改造后,这个小需求,就可以跨平台做到绿色版本了。找到flash插件的安装位置后,苏南大叔把里面的文件复制到项目的根目录的dll
目录下面,然后通过在代码里面修改一下逻辑,就可以实现这历史性的飞跃了。
关键代码
关键代码如下,大家看看精华所在:
var pepflashplayer ="";
pepflashplayer=app.getPath('pepperFlashSystemPlugin');
if (process.platform=="win32"){
if(process.arch == 'x64'){
pepflashplayer=path.join(__dirname, 'dll/pepflashplayer64_29_0_0_113.dll');
}
else{
pepflashplayer=path.join(__dirname, 'dll/pepflashplayer32_29_0_0_113.dll');
}
}
else if(process.platform == 'darwin'){
pepflashplayer=path.join(__dirname, 'dll/PepperFlashPlayer.plugin');
}
else {
console.log("sorry");
}
app.commandLine.appendSwitch('ppapi-flash-path',pepflashplayer);
当然别忘了开启'plugins': true
。
效果如下:
补充说明
打包之后,这些dll文件是是打包到asar文件里面,也是能运行的。
相关链接
- 《win系统,electron如何集成加载flash插件》 https://newsn.net/say/electron-flash-win.html
- 《mac系统,electron如何集成加载flash插件》 https:newsn.net/say/electron-flash-mac.html
- 《win系统,electron如何集成绿色版flash播放器?》https://newsn.net/say/electron-flash-diy-win.html
- 《mac系统,electron如何集成绿色版flash播放器?》 https://newsn.net/say/electron-flash-diy-mac.html
结论
这样处理过的flash播放器插件,集成到electron里,同时支持win和mac,应该这也算是跨平台了吧?
更多electron的精彩文章,请点击这里查看:https://newsn.net/tag/electron/ 。
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
我把dll路径指定到其他目录
path.join('F:/asdf/electron-quick-start/pepflashplayer.dll')
还是只要打成exe 就无法加载
所以关键点到底是哪里呢
试试把 dll 放在 extraresource 里面,然后 path.join 的时候用 ../../ 找到你的目录里面的dll,一定可以的。如果不确定几个 ../ ,可以asar 解压一下,看看 main.js 的具体位置。
//获取 flash插件 位置
let flashDll = path.join(__dirname, 'dll\\pepflashplayer.dll')
app.commandLine.appendSwitch('ppapi-flash-path', flashDll)
不打包正常加载 但是只要打成exe就不行了
安装后看到app.asar里dll文件也存在
是什么原因呢
dll存在asar里面就错了,不能放在asar里面
南叔,请教个问题,我在找路径的时候发现:
var pepflashplayer = ''
pepflashplayer = app.getPath('pepperFlashSystemPlugin')
switch (process.platform) {
case 'win32':
pepflashplayer = path.join('C:/Users/Administrator/Desktop/flash_test/aaa/dll/pepflashplayer64_31_0_0_153.dll')
break
case 'darwin':
pepflashplayer = path.join(__dirname, '/PepperFlashPlayer.plugin')
break
case 'linux':
pepflashplayer = path.join(__dirname, 'libpepflashplayer.so')
break
}
console.log(pepflashplayer, 1111111)
console.log(__dirname, 333)
app.commandLine.appendSwitch('ppapi-flash-path', pepflashplayer)
C:/Users/Administrator/Desktop/flash_test/aaa/dll/pepflashplayer64_31_0_0_153.dll'只有这种写法可以加载插件,
__dirname找到的是 src\main
请问如何能找到项目根目录呢,aaa是我的项目名,用electron-vue开发,插件单独放在了dll文件夹下,我看您用electron就是这样写的没问题。。。
path.join path.resolve