Электронные аргументы командной строки второго экземпляра повреждены? - PullRequest
0 голосов
/ 02 мая 2020

Я следую примеру requestSingleInstanceLock () в документации Electron. По какой-то причине аргументы командной строки второго экземпляра кажутся поврежденными, если аргументы имеют значения в кавычках с пробелами внутри. Начальный process.argv выглядит просто отлично, однако параметр argv в событии второго экземпляра разделяется на пробелы, добавляя дополнительные значения аргументов, все значения преобразуются в нижний регистр и несколько предварительно сортируются.

Есть ли способ отключить эту обработку и в конечном итоге передать / получить командную строку второго экземпляра как есть?

ПРИМЕЧАНИЕ. Я использовал app.makeSingleInstance() в предыдущих версиях Electron, однако это API был удален.

Вот выдержка из тестового приложения, которое я использую:

console.log(process.argv);

if (!app.requestSingleInstanceLock()) {
  app.exit();
}

app.on('second-instance', (event, argv, workingDirectory) => {
  console.log('second-instance', argv);
});

Вот результат:

C:\electron-app-win32-x64>electron-app.exe "/Arg1 Value1" "/Arg2 Value2"

C:\electron-app-win32-x64>
[
  'C:\\electron-app-win32-x64\\electron-app.exe',
  '/Arg1 Value1',
  '/Arg2 Value2'
]
second-instance [   <--- from the same command in another console
  'electron-app.exe',
  '/arg1',
  '/arg2',
  '--allow-file-access-from-files',
  '--original-process-start-time=13232862957593703',
  'value1',
  'value2'
]

1 Ответ

0 голосов
/ 03 мая 2020

Это

Логи синтаксического анализа командной строки Chromium c. Chromium обрабатывает «ключи» (такие как --foo или --foo = bar) и «аргументы» (вещи, которые не начинаются с -) отдельно

Вы можете найти ссылки на источник Chromium и некоторые хаки, чтобы обойти эту логику c в этом выпуске github. https://github.com/electron/electron/issues/20322

...