使用电子生成器时如何将参数传递给电子?
Posted
技术标签:
【中文标题】使用电子生成器时如何将参数传递给电子?【英文标题】:How to pass an argument to electron when using electron-builder? 【发布时间】:2017-12-30 12:08:37 【问题描述】:我正在使用 Electron 构建应用程序并使用 Electron Builder 进行打包。运行电子时,我想通过这个command line argument: --enable-mixed-sandbox。
有可能吗?怎么样?
这个:
app.commandLine.appendSwitch('enable-mixed-sandbox')
不起作用due to:
注意,调用是不够的 app.commandLine.appendSwitch('--enable-sandbox'),作为电子/节点 启动代码在可以对 chromium 进行更改后运行 沙盒设置。开关必须传递到电子上 命令行:
electron --enable-sandbox app.js
如果启用了--enable-sandbox,则无法仅对某些渲染器启用OS沙箱,正常的电子窗口 无法创建。
【问题讨论】:
我想最简单的方法是编辑快捷方式,以便它使用该选项启动。不知道如何以编程方式做到这一点。 github.com/electron-userland/electron-builder/issues/1905 @SwiftsNamesake 据我所知,这些论点还没有达到电子。你知道吗? 手动试试看会发生什么? 我已经大大改变了我的答案。 【参考方案1】:您可以在应用程序主脚本(打开 Electron 窗口的那个)中使用 app.commandLine.appendSwitch
你的开关的例子是
app.commandLine.appendSwitch('启用混合沙盒')【讨论】:
当该行开始运行时,该选项为时已晚。它在有关沙盒的文档中的某处(我现在在移动设备上)。【参考方案2】:另一种方法是,您可以使用 spectron 在调试模式下启动应用程序。它允许你传递任何你想要的参数。
const Application = require('spectron').Application
// Returns a promise that resolves to a Spectron Application once the app has loaded.
// Takes a Ava test. Makes some basic assertions to verify that the app loaded correctly.
function createApp (t)
return new Application(
path: 'path/to/app',
args: ['-r', '--enable-mixed-sandbox'],
env: NODE_ENV: 'test',
waitTimeout: 10e3
)
https://github.com/electron/spectron#new-applicationoptions
【讨论】:
如何与 electron builder 一起分发应用程序?我可以在开发模式下传递我想要的任何参数,这不是问题。问题是由 electron-builder 生成的 .exe。 嗯,出于安全考虑,我认为您不能为捆绑应用程序传递沙箱。正如文档中提到的电子 V8 引擎中的一些错误可能允许恶意代码访问渲染器预加载 API,从而通过远程模块有效地授予对系统的完全访问权限。检查此link 也可能解释多一点。【参考方案3】:关于我在 cmets 中提出并链接到的那个问题,我收到了 a response:
app.enableMixedSandbox() // Experimental macOS Windows
有关文档,请参阅 here。
【讨论】:
以上是关于使用电子生成器时如何将参数传递给电子?的主要内容,如果未能解决你的问题,请参考以下文章