使用 SWF 的 Electron 在测试时有效,但在构建后无效
Electron using SWF works when testing but not after build
我有一个简单的 Electron 应用程序,我正在合并一个具有 SWF 对象的 HTML 页面。我包含了 Pepper Flash Player 并从 tutorial 复制了 main.js 代码。当我从命令提示符 运行 应用程序 / git bash 进行测试时,SWF 工作正常。但是,一旦我构建了应用程序并 运行 它,SWF 内容将不会加载。内容区只显示"Couldn't load plugin.".
我已经包含了 Flash 播放器插件的 32 位和 64 位版本。
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))
我通过反复试验找出了我的问题(有几个)。
- 主要问题是,在构建时,我有 --asar=true,因此该应用程序试图从 asar 存档中提取插件,但它做不到。为了解决这个问题,我只是在构建时将插件添加到 --extraResource 标志中。
除此之外,我在应用程序中更新了 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
}
- 最后,正如我在搜索的各个地方指出的那样,使用的是 64 位插件而不是 32 位插件。
我希望这可以为其他人节省一些时间。
我有一个简单的 Electron 应用程序,我正在合并一个具有 SWF 对象的 HTML 页面。我包含了 Pepper Flash Player 并从 tutorial 复制了 main.js 代码。当我从命令提示符 运行 应用程序 / git bash 进行测试时,SWF 工作正常。但是,一旦我构建了应用程序并 运行 它,SWF 内容将不会加载。内容区只显示"Couldn't load plugin.".
我已经包含了 Flash 播放器插件的 32 位和 64 位版本。
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))
我通过反复试验找出了我的问题(有几个)。
- 主要问题是,在构建时,我有 --asar=true,因此该应用程序试图从 asar 存档中提取插件,但它做不到。为了解决这个问题,我只是在构建时将插件添加到 --extraResource 标志中。
除此之外,我在应用程序中更新了 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 }
- 最后,正如我在搜索的各个地方指出的那样,使用的是 64 位插件而不是 32 位插件。
我希望这可以为其他人节省一些时间。