Electron Windows生产包命令行参数

Electron Windows生产包命令行参数,windows,electron,command-line-arguments,electron-builder,Windows,Electron,Command Line Arguments,Electron Builder,我正在macOS上使用Electron builder构建一个Electron应用程序 在我的代码中,我访问命令行参数如下: const cmd = electron.remote.app.commandLine; const val = cmd.hasSwitch('myArg') ? cmd.getSwitchValue('myArg') : undefined; 当提供以下参数时,这对于macOS上的生产构建非常有效: ./my-electron-app

我正在macOS上使用
Electron builder
构建一个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
记录
electron.remote.process.argv[1]
时,我可以在macOSWindows上看到传递的参数,但是
hasSwitch
getSwitchValue
不会给我值


我做错了什么?还是有更好的方法让跨平台命令行参数正常工作?

我猜这是因为开关中的大写字母。见非公开发行:

这是故意的。
hasSwitch
API是Chromium命令行类的直接包装器,它故意这样做

发件人:

开关名称必须为小写


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

首先,这告诉我,您可能传递了一个类似URL/path的参数,该参数在Windows中被剥离,并将询问特定的arg(请参阅),但我本来希望arg也从process.argv中剥离。。所以我猜这是我刚刚在我的Windows机器上尝试的东西,将
“-abc=foo”
传递到VSCode的launch.json“args”属性中,并且
app.commandLine.hasSwitch(“abc”)
正确返回true。我没有在任何地方使用electron builder。不确定这是否相关。我没有运行我的应用程序的打包版本,只是从源代码。不是吗?看起来很相似,但不确定为什么它会起作用Mac@pushkin谢谢你的评论。是的,我想传递一个路径作为参数(
C:\…
),但是传递像
foo
这样的字符串也不起作用。我刚刚再次检查了
my-electron-app.exe-myArg=foo
将在
electron.remote.process.argv
中显示
-myArg=foo
..
我刚刚做了一些额外的调试,结果如下:
hasSwitch('myArg
)`returns
false
getSwitchValue('myArg')
返回
。我尝试了上面的4个版本:双破折号/单破折号、斜线、无前缀。谢谢!我将尝试使用所有小写字母,并将向您报告成功的原因!当使用所有小写字母时,它可以完美地工作。看起来Chromium甚至不在乎你是用双破折号,单破折号还是斜杠在论点前面。我想在交换机名称中使用破折号也是允许的,但我还没有测试过。