Я пытаюсь упаковать двоичный исполняемый файл python с angular-electronic в Linux.Я следовал за этим ответом из переполнения стека. связывание предварительно скомпилированного двоичного файла в электронное приложение .
В main.ts я написал этот дополнительный фрагмент кода.Я поместил исполняемый двоичный файл в node_modules / datapod / datapod, а также вставил символическую ссылку в этот путь в node_modules / .bin / folder.
const spawn = require('child_process').spawn;
var appRootDir = require('app-root-dir').get();
var datapodpath=appRootDir+'/node_modules/datapod/datapod';
console.log(datapodpath)
const datapod = spawn(datapodpath, [], {}); //add whatever switches you need here
datapod.stdout.on( 'data', data => {
console.log( `stdout: ${data}` );
});
datapod.stderr.on( 'data', data => {
console.log( `stderr: ${data}` );
})
datapod.on( 'close', code => {
console.log( `child process exited with code ${code}` );
})
Все прекрасно работает, когда я
npm start
Я также вижу журналы для приложения на Python.Когда я это сделаю,
npm запустит электрон: linux
Приложение успешно компилируется с двоичным файлом (поскольку размер скомпилированного приложения с двоичным файлом точно равен голому угловому приложению + размердвоичный).Когда я пытаюсь запустить это скомпилированное приложение, происходит сбой со следующей ошибкой.
ОБНОВЛЕНИЕ: Я пробовал другой метод, но по-прежнему нет результата.Я создал новую папку externals / bin и скопировал исполняемый двоичный файл «datapod» в эту папку.Чтобы скопировать эту папку в упакованное приложение, добавьте эти строки в Electron-Builder.js
"files": [
"**/*",
"!**/*.ts",
"!*.code-workspace",
"!LICENSE.md",
"!package.json",
"!package-lock.json",
"!src/",
"!e2e/",
"!hooks/",
"!angular.json",
"!_config.yml",
"!karma.conf.js",
"!tsconfig.json",
"!tslint.json",
"externals/bin"
],
Отредактировал мой код в файле main.ts
const appPath = process.env.NODE_ENV === 'production' ? process.resourcesPath : __dirname;
const execPath =path.join(appPath, 'externals/bin/datapod');
console.log(execPath)
Успешно компилирует, когда я пыталсячтобы запустить это приложение, я получил ту же ошибку.Я распаковал приложение в /tmp/.moun-angular***/resources/app.asar с
npx asar extract /tmp/.mount_angulaG6ARST/resources/app.asar extrractedApp
Содержимое папки действительно имеет файл externals / bin / datapod, но не запускается.