Разветвление из процесса Electron не работает в Windows только из установленного исполняемого файла

Я разрабатываю настольное приложение с помощью Electron. Я выполняю определенные задачи в отдельном процессе, чтобы не блокировать процессы рендеринга. Я добиваюсь этого, позвонив require('child_process').fork. Это работает должным образом на всех платформах (Linux, Windows, OSX). Однако, когда я упаковываю приложение с помощью electron-builder, устанавливаю сгенерированный установщик NSIS и выполняю установленный двоичный файл, вилка не работает. Я запустил этот двоичный файл из командной строки, чтобы увидеть какие-либо сообщения об ошибках, но это не помогло. Когда это происходит, родительский процесс, который разветвляет дочерний процесс, получает exit обратный вызов с кодом выхода 1. Это проблема только с исполняемым файлом, установленным установщиком NSIS. Если я запустил electron-builder с параметрами --dir и запустил исполняемый файл из распакованного каталога, он будет работать нормально.

Это заставило меня поверить, что это связано с разрешениями, установленными для исполняемого файла установщиком. Я поигрался с разрешениями, но безуспешно. Я не уверен, какие разрешения отвечают за разрешение / предотвращение такого поведения.

Вот скриншот разрешений для сбойного исполняемого файла  введите описание изображения здесь


person Jayesh    schedule 26.12.2016    source источник


Ответы (1)


Я разобрался в проблеме. Это не имело отношения к разрешениям на исполняемые файлы или упаковке asar.

Насколько я понимаю, проблема заключалась в том, как я упаковывал собственный модуль. Разветвленный процесс загружает собственный модуль. Но при упаковке я решил упаковать только каталог build/, чтобы не распространять частный исходный код. Это приводило к сбою разветвленного процесса. Когда я также начал упаковывать package.json файл собственного модуля вместе с каталогом build/, разветвленный процесс работал правильно.

person Jayesh    schedule 01.01.2017