使用SWF的电子在测试时工作,但在构建后不工作

时间:2018-05-31 17:55:47

标签: flash electron

我有一个简单的Electron应用程序,我将一个包含SWF对象的HTML页面合并到一起。我已经包含了Pepper Flash Player并从tutorial复制了main.js代码。当我从命令提示符/ git bash运行应用程序进行测试时,SWF工作正常。但是,一旦我构建应用程序并运行它,SWF内容就不会加载。内容区域只显示"无法加载插件。"。

我已经包含了32位和64位版本的Flash播放器插件。

let pluginName;
switch (process.platform) {
  case 'win32':
    if (process.arch === 'x64' || process.env.hasOwnProperty('PROCESSOR_ARCHITEW6432')) {
      console.log("64bit");
      pluginName = "PEP/pepflashplayer64_29_0_0_171.dll";
    }
    else{
      console.log("32bit");
      pluginName = "PEP/pepflashplayer32_29_0_0_171.dll";
    }
    break
  case 'darwin':
    pluginName = 'PEP/PepperFlashPlayer.plugin'
    break
}

 app.commandLine.appendSwitch('ppapi-flash-path', path.join(__dirname, pluginName))

1 个答案:

答案 0 :(得分:0)

我通过大量试验和错误找出了我的问题(有一些)。

  1. 主要问题是,在构建时,我有--asar = true,因此应用程序试图从asar存档中提取插件,但它不能。为了解决这个问题,我刚刚将插件添加到构建的--extraResource标志中。
  2. 除此之外,在应用程序中我更新了switch语句以确定它是构建还是测试(来自cmd行),如下所示:

      switch (process.platform) {
        case 'win32':
          if (basename === "resources") {
            pluginName = "../../pepflashplayer32_29_0_0_171.dll";
          }
          else {
            pluginName = "./plugins/pepflashplayer32_29_0_0_171.dll";
          }
          break
        case 'darwin':
          if (basename === "resources") {
            pluginName = '../../PepperFlashPlayer.plugin'
          }
          else {
            pluginName = './plugins/PepperFlashPlayer.plugin'
          }
          break
      }
    
  3. 最后,正如我所搜索的各个地方所指出的那样,64位插件被用来代替32位。
  4. 我希望这可以节省一些时间。