【问题标题】: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沙箱,正常的电子窗口 无法创建。

【问题讨论】:

  • 我想最简单的方法是编辑快捷方式,以便它使用该选项启动。不知道如何以编程方式做到这一点。
  • @SwiftsNamesake 据我所知,这些论点还没有达到电子。你知道吗?
  • 手动试试看会发生什么?
  • 我已经大大改变了我的答案。

标签: electron electron-builder electron-packager


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-15
    • 2020-05-14
    • 2016-11-14
    • 2017-09-05
    • 2016-04-16
    • 2018-04-26
    • 2017-04-08
    • 2014-01-16
    相关资源
    最近更新 更多