首页 > 解决方案 > Electron Windows Production Bundle 命令行参数

问题描述

我正在electron-buildermacOS 上构建一个 Electron 应用程序。

在我的代码中,我像这样访问命令行参数:

const cmd = electron.remote.app.commandLine;

const val = cmd.hasSwitch('myArg')
        ? cmd.getSwitchValue('myArg')
        : undefined;

提供参数时,这适用于 macOS 上的生产构建:

./my-electron-app.app/Contents/MacOS/my-electron-app --myArg=foo

// or:
open my-electron-app.app --args -myArg=foo

但在 Windows 上我无法让它工作。

这是我尝试使用的内容cmd.exe

my-electron-app.exe --myArg=foo
my-electron-app.exe -myArg=foo
my-electron-app.exe /myArg=foo
my-electron-app.exe myArg=foo

记录时,我可以在 macOSWindowselectron.remote.process.argv[1]上看到传递的参数,不会给我值。 hasSwitchgetSwitchValue

我究竟做错了什么?或者有没有更好的方法让跨平台命令行参数工作?

标签: windowselectroncommand-line-argumentselectron-builder

解决方案


我猜这是因为你的开关中的大写字母。请参阅已关闭问题:

这是故意的。hasSwitchAPI 是 Chromium CommandLine 类的直接包装器,它是故意以这种方式运行的。

来自铬源

开关名称必须小写。

虽然我还不完全清楚为什么 Mac 不会遇到同样的问题。


推荐阅读