2016-03-03 20:42:14 +00:00
|
|
|
|
# 使用 Pepper Flash 插件
|
|
|
|
|
|
|
|
|
|
Electron 现在支持 Pepper Flash 插件。要在 Electron 里面使用 Pepper Flash 插件,你需
|
|
|
|
|
要手动设置 Pepper Flash 的路径和在你的应用里启用 Pepper Flash。
|
|
|
|
|
|
|
|
|
|
## 保留一份 Flash 插件的副本
|
|
|
|
|
|
2016-06-18 13:26:26 +00:00
|
|
|
|
在 macOS 和 Linux 上,你可以在 Chrome 浏览器的 `chrome://plugins` 页面上找到 Pepper
|
2016-03-03 20:42:14 +00:00
|
|
|
|
Flash 的插件信息。插件的路径和版本会对 Election 对其的支持有帮助。你也可以把插件
|
|
|
|
|
复制到另一个路径以保留一份副本。
|
|
|
|
|
|
|
|
|
|
## 添加插件在 Electron 里的开关
|
|
|
|
|
|
2017-01-06 13:40:36 +00:00
|
|
|
|
你可以直接在命令行中用 `--ppapi-flash-path` 和 `--ppapi-flash-version` 或者
|
2016-03-03 20:42:14 +00:00
|
|
|
|
在 app 的准备事件前调用 `app.commandLine.appendSwitch` 这个 method。同时,
|
2017-01-06 13:40:36 +00:00
|
|
|
|
添加 `BrowserWindow` 的插件开关。
|
2016-03-03 20:42:14 +00:00
|
|
|
|
例如:
|
|
|
|
|
|
|
|
|
|
```javascript
|
2017-01-06 13:40:36 +00:00
|
|
|
|
const {app, BrowserWindow} = require('electron')
|
|
|
|
|
const path = require('path')
|
2016-03-03 20:42:14 +00:00
|
|
|
|
|
2017-01-06 13:40:36 +00:00
|
|
|
|
// 指定 flash 路径,假定它与 main.js 放在同一目录中。
|
|
|
|
|
let pluginName
|
|
|
|
|
switch (process.platform) {
|
|
|
|
|
case 'win32':
|
|
|
|
|
pluginName = 'pepflashplayer.dll'
|
|
|
|
|
break
|
|
|
|
|
case 'darwin':
|
|
|
|
|
pluginName = 'PepperFlashPlayer.plugin'
|
|
|
|
|
break
|
|
|
|
|
case 'linux':
|
|
|
|
|
pluginName = 'libpepflashplayer.so'
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
app.commandLine.appendSwitch('ppapi-flash-path', path.join(__dirname, pluginName))
|
|
|
|
|
|
|
|
|
|
// 可选:指定 flash 的版本,例如 v17.0.0.169
|
2016-10-03 03:47:16 +00:00
|
|
|
|
app.commandLine.appendSwitch('ppapi-flash-version', '17.0.0.169')
|
2016-03-03 20:42:14 +00:00
|
|
|
|
|
2017-01-06 13:40:36 +00:00
|
|
|
|
app.on('ready', () => {
|
|
|
|
|
let win = new BrowserWindow({
|
|
|
|
|
width: 800,
|
|
|
|
|
height: 600,
|
|
|
|
|
webPreferences: {
|
|
|
|
|
plugins: true
|
2016-03-03 20:42:14 +00:00
|
|
|
|
}
|
2016-10-03 03:47:16 +00:00
|
|
|
|
})
|
2017-01-06 13:40:36 +00:00
|
|
|
|
win.loadURL(`file://${__dirname}/index.html`)
|
|
|
|
|
// 还有别的
|
2016-10-03 03:47:16 +00:00
|
|
|
|
})
|
2016-03-03 20:42:14 +00:00
|
|
|
|
```
|
|
|
|
|
|
2017-01-06 13:40:36 +00:00
|
|
|
|
您也可以尝试加载系统安装的 Pepper Flash 插件,而不是装运
|
|
|
|
|
插件,其路径可以通过调用
|
|
|
|
|
`app.getPath('pepperFlashSystemPlugin')` 获取。
|
|
|
|
|
|
2016-03-03 20:42:14 +00:00
|
|
|
|
## 使用 `<webview>` 标签启用插件
|
|
|
|
|
|
|
|
|
|
在 `<webview>` 标签里添加 `plugins` 属性。
|
|
|
|
|
|
|
|
|
|
```html
|
|
|
|
|
<webview src="http://www.adobe.com/software/flash/about/" plugins></webview>
|
|
|
|
|
```
|
2017-01-06 13:40:36 +00:00
|
|
|
|
|
|
|
|
|
## 错误解决
|
|
|
|
|
|
|
|
|
|
您可以通过在控制台打印 `navigator.plugins` 来检查 Pepper Flash 插件是否加载
|
|
|
|
|
(虽然你不知道插件的路径是正确的)。
|
|
|
|
|
|
|
|
|
|
Pepper Flash 插件的操作系统必须和 Electron 的操作系统匹配。在 Windows 中,
|
|
|
|
|
一个常见的错误是对64位版本的 Electron 使用 32bit 版本的 Flash 插件。
|
|
|
|
|
|
|
|
|
|
在 Windows 中,传递给 `--ppapi-flash-path` 的路径必须使用 `\` 作为路径
|
|
|
|
|
分隔符,使用 POSIX-style 的路径将无法工作。
|
|
|
|
|
|
|
|
|
|
对于一些操作,例如使用 RTMP 的流媒体,有必要向播放器的 `.swf` 文件授予更多的权限。
|
|
|
|
|
实现这一点的一种方式是使用 [nw-flash-trust](https://github.com/szwacz/nw-flash-trust)。
|