Electron Windows 生产包命令行参数

Electron Windows Production Bundle Command Line Arguments

我正在 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] 我可以在 macOS 上看到传递的参数 and Windows, but hasSwitchgetSwitchValue 不会给我值。

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

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

This is intentional. The hasSwitch API is a direct wrapper of the Chromium CommandLine class, which behaves this way on purpose.

来自Chromium source

Switch names must be lowercase.

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