Приложение Electron Forge: Проблемы с расположением исполняемого файла в сборке релиза
У меня есть приложение Electron Forge, предназначенное для запуска сервера Django (на Windows). Сервер Django скомпилирован в исполняемый файл с помощью PyInstaller. Приложение Electron Forge вызывает этот исполняемый файл с помощью команды spawn.
Когда я собираю приложение Electron Forge с помощью npm run make
, оно функционирует, как и ожидалось. Однако при использовании npm run release
(который генерирует установочный файл) исполняемый файл не может быть найден. Кроме того, он не существует в папке ресурсов.
При запуске сервера я получаю ошибку:
Error: spawn C:\Users\****\AppData\Local\Programs\****\resources\django-server\server.exe ENOENT
Мой файл forge.config.ts:
Const config: ForgeConfig = {
packagerConfig: {
asar:true,
icon "./src/assets/Logo/icon"
extraResources: ['./django-server/server.exe']
}
makers: [
new MakerSquirrel({noMsi: false}),
new MakerZIP({})
], ....
Файл server.exe запускается внутри файла index.ts с помощью команды spawn:
exePath = path.join(process.resourcesPath, 'django-server', 'server.exe');
const child = spawn(exePath, []);
Почему файл server.exe не копируется в папку ресурсов при запуске npm run release
Проблема заключалась в том, что конфигурация electron-forge и electron-builder была неправильной. Для npm run make
использовался electron-forge, и он работал хорошо. Релизная часть была собрана с помощью electron-builder, и эта конфигурация была неправильной.
Чтобы встроить иконки и файл server.exe в приложение electron, эти ресурсы должны были быть указаны в файле package.json
.
"build": {
"win": {
"icon": icon "src/assets/Logo/icon",
"extraResources": ["django-server/server.exe"]
}
}