Файловая ассоциация с электронным компоновщиком

Я делаю многоплатформенное приложение с помощью Electron и пытаюсь создать ассоциацию файлов с помощью электронного построителя.

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

Я тоже ничего не нашел в официальных документах, какая помощь?

Заранее спасибо.


person Javis Perez    schedule 03.04.2018    source источник
comment
Вы можете создать свой собственный протокол, чтобы открыть свое приложение, например myapp: --params, в своем терминале и/или exec, это то, что вы хотите?   -  person Marcelo Formentão    schedule 03.04.2018
comment
Ну, не совсем, я хочу иметь возможность открывать связанный файл (например, test.myapp) с помощью двойного щелчка, я использовал для этого ассоциации файлов, но я не вижу способа получить путь к файлу на моем приложение. Я имею в виду, что я не хочу каждый раз вводить протокол для открытия файла, я хочу иметь возможность сделать это, просто дважды щелкнув файл.   -  person Javis Perez    schedule 03.04.2018
comment
В настоящее время я также ищу ответ, и хотя я не уверен, моя догадка заключается в том, что ответ лежит в NodeJS API, на котором построен Electron. Я полагаю, что запуск приложения через сопоставление типов файлов будет таким же, как запуск приложения с передачей некоторых аргументов, поэтому пути к файлам должны отображаться в process.argv. Я просто еще не успел проверить эту теорию.   -  person klesus    schedule 18.11.2018
comment
Наткнулся на это связанный вопрос, и, глядя на комментарии, кажется, что мое подозрение было верным. open-file (для macOS) в документации NodeJS упоминается использование process.argv для окон.   -  person klesus    schedule 18.11.2018


Ответы (1)


Ассоциации файлов с Electron работают так же, как и для обычных приложений Node.js: вы получаете параметры от вызывающей стороны в process.argv массив.

Однако есть хитрость: когда ваше приложение запаковано (то есть в asar-файле), argv не имеет такого же количества аргументов, как при запуске в режиме dev.

Вы можете использовать app.isPackage() (doc), чтобы изменить ситуацию:

if (app.isPackaged) {
  // workaround for missing executable argument)
  process.argv.unshift(null)
}
// parameters is now an array containing any files/folders that your OS will pass to your application
const parameters = process.argv.slice(2)

Подробнее об этом здесь.

person Feugy    schedule 10.10.2020