Решение для согласованных локальных путей к программам в Linux и Windows - PullRequest
0 голосов
/ 25 января 2019

Я создаю приложение, использующее Electron / Nodejs, чтобы выполнить рекурсивное преобразование видео папок и просмотр папок для WINDOWS и LINUX, используя Handbrake.Вы можете клонировать мой репозиторий, используя:

git clone https://github.com/HaveAGitGat/HBBatchBeast

Используйте 'npm install' для установки зависимостей, как я их указал.

Демонстрационное видео приложения здесь: http://sendvid.com/v0vkqv2f

У меня проблемы с путями к файлам, потому что я пытаюсь сделать это автономной программой, где все настройки программы хранятся в той же папке, что и папка exe (Windows) или lib (Linux).

Моя проблема в Windows заключается в том, что __dirname возвращает разные пути к папкам при разработке (до упаковки) по сравнению с после упаковки.Перед упаковкой он возвращает корневую папку приложения, и я могу выполнить файл bat со следующим путем к файлу:

var workerpath = __dirname + "/Config/Processes/BatchFiles/HandbrakeCLIBatchTemp" + workerNumber + ".bat";

Красиво и легко.Но когда я упаковываю приложение, «__dirname» возвращает папку, которая находится внутри какого-то пакета, а не корневую папку приложения.Затем я должен выполнить некоторую обработку для __dirname, чтобы получить путь к папке на две папки выше.Например:

var fullPath=__dirname;
fullPath = fullPath.slice(0,fullPath.lastIndexOf(stringProcessingSlash));
fullPath = fullPath.slice(0,fullPath.lastIndexOf(stringProcessingSlash));

var workerpath = fullPath+ "/Config/Processes/BatchFiles/HandbrakeCLIBatchTemp" + workerNumber + ".bat";

Тогда я могу правильно выполнить биту.

Это все хорошо, но это кажется ненужной проблемой?Есть ли какое-то решение, чтобы у меня не было другого кода до и после упаковки?Я чувствую, что заставляю пользователя указывать путь к рабочему каталогу, когда пользователь впервые запускает программу, чтобы программа сразу знала, из какой папки она работает.Но это кажется громоздким шагом для пользователя.

Аналогично в linux проблема заключается в том, что "./Config/totalFilesFound.txt" является локальным каталогом в папке приложения во время разработки, но когда я устанавливаю приложениеВнезапно указанная выше папка 'Config' создается в домашнем каталоге пользователя.Например:

/home/haveagitgat/Config

Все это означает, что, хотя я пишу приложение только для 2 операционных систем, мне кажется, что я пишу его для 4 операционных систем из-за различных путей к файламЯ должен учитывать.Любая помощь будет высоко ценится.

...