Electron Windows生产包命令行参数
我正在macOS上使用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
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]
时,我可以在macOS和Windows上看到传递的参数,但是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
)`returnsfalse
,getSwitchValue('myArg')
返回”
。我尝试了上面的4个版本:双破折号/单破折号、斜线、无前缀。谢谢!我将尝试使用所有小写字母,并将向您报告成功的原因!当使用所有小写字母时,它可以完美地工作。看起来Chromium甚至不在乎你是用双破折号,单破折号还是斜杠在论点前面。我想在交换机名称中使用破折号也是允许的,但我还没有测试过。