• 使用 Pepper Flash 插件
    • 保留一份 Flash 插件的副本
    • 添加插件在 Electron 里的开关
    • 使用 <webview> 标签启用 Flash 插件
    • 故障排查

    使用 Pepper Flash 插件

    Electron 现在支持 Pepper Flash 插件。要在 Electron 里面使用 Pepper Flash 插件,你需 要手动设置 Pepper Flash 的路径和在你的应用里启用 Pepper Flash。

    保留一份 Flash 插件的副本

    在 macOS 和 Linux 上,您可以通过在 Chrome 浏览器的 chrome://flash 页面上找到 Pepper Flash 插件的信息。 插件的路径和版本会对 Election 对其的支持有帮助。 你也可以把插件 复制到另一个路径以保留一份副本。

    添加插件在 Electron 里的开关

    你可以直接在命令行中用 —ppapi-flash-path—ppapi-flash-version 或者 在 app 的准备事件前调用 app.commandLine.appendSwitch 这个方法。 同时, 打开 BrowserWindowplugins选项。

    例如:

    1. const { app, BrowserWindow } = require('electron')
    2. const path = require('path')
    3. // 指定 flash 路径,假定它与 main.js 放在同一目录中。
    4. let pluginName
    5. switch (process.platform) {
    6. case 'win32':
    7. pluginName = 'pepflashplayer.dll'
    8. break
    9. case 'darwin':
    10. pluginName = 'PepperFlashPlayer.plugin'
    11. break
    12. case 'linux':
    13. pluginName = 'libpepflashplayer.so'
    14. break
    15. }
    16. app.commandLine.appendSwitch('ppapi-flash-path', path.join(__dirname, pluginName))
    17. // 可选:指定 flash 的版本,例如 v17.0.0.169
    18. app.commandLine.appendSwitch('ppapi-flash-version', '17.0.0.169')
    19. app.on('ready', () => {
    20. let win = new BrowserWindow({
    21. width: 800,
    22. height: 600,
    23. webPreferences: {
    24. plugins: true
    25. }
    26. })
    27. win.loadURL(`file://${__dirname}/index.html`)
    28. // 一些别的什么
    29. })

    您也可以尝试加载系统安装的 Pepper Flash 插件,而不是装运 插件,其路径可以通过调用 app.getPath('pepperFlashSystemPlugin') 获取。

    使用 <webview> 标签启用 Flash 插件

    <webview> 标签里添加 plugins 属性。

    1. <webview src="https://www.adobe.com/software/flash/about/" plugins></webview>

    故障排查

    您可以通过在控制台打印 navigator.plugins 来检查 Pepper Flash 插件是否加载 (虽然你不知道插件的路径是正确的)。

    Pepper Flash 插件的操作系统必须和 Electron 的操作系统匹配。在 Windows 中, 一个常见的错误是对64位版本的 Electron 使用 32bit 版本的 Flash 插件。

    在 Windows 中,传递给 —ppapi-flash-path 的路径必须使用 作为路径分隔符,使用 POSIX-style 的路径将无法工作。

    对于一些操作,例如使用 RTMP 的流媒体,有必要向播放器的 .swf 文件授予更多的权限。 实现这一点的一种方式是使用 nw-flash-trust.