Электрон с использованием SWF работает при тестировании, но не после сборки - PullRequest
0 голосов
/ 31 мая 2018

У меня есть простое приложение Electron, в которое я включаю одну HTML-страницу с объектом SWF.Я включил Pepper Flash Player и скопировал код main.js из учебника .Когда я запускаю приложение из командной строки / git bash для тестирования, SWF работает нормально.Однако после того, как я соберу приложение и запусту его, содержимое SWF не будет загружено.В области содержимого просто отображается «Не удалось загрузить плагин».

Я включил 32-битную и 64-битную версии плагина Flash player.

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 голосов
/ 11 июня 2018

Я выяснил свои проблемы (их было несколько) путем большого количества проб и ошибок.

  1. Основная проблема заключалась в том, что при сборке у меня был --asar = true, поэтому приложение пыталосьвытащить плагин из архива асара, чего не смог.Чтобы решить эту проблему, я просто добавил плагин к флагу --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. Наконец, как отмечали многие в разных местах, которые я искал, вместо 32-битного использовался 64-битный плагин.

Надеюсь, это может сэкономить немного времени другим.

...