Ярлык папки Windows приложения Electron — получить путь к этой папке?

#node.js #windows #path #electron #registry

Вопрос:

TL;DR

Я хочу открыть свое приложение Electron с помощью ярлыка папки Windows (щелкните правой кнопкой мыши на любой папке и щелкните Run In My Electron App ) и получить путь к папке, которая инициировала приложение.

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

Запуск в моем электронном приложении
введите описание изображения здесь

Таким образом, в приведенном выше ярлыке цель состоит в том, чтобы узнать путь F:ePCLibrariesVideosLoomTemporary внутри приложения electron. (и путь всегда должен соответствовать папке, которая инициировала приложение).

Реальный рабочий пример: Точно так же, как при использовании WinRAR, вы можете щелкнуть правой кнопкой мыши по папке и нажать «Добавить в архив…»-приложение WinRAR знает путь к папке, по которой был сделан щелчок правой кнопкой мыши. (Что-то вроде «открыть файл с помощью», но «открыть папку с помощью»).

Другим реальным примером, который работает с Electron, является код Visual Studio, вы можете щелкнуть правой кнопкой мыши на папке и нажать «Открыть с помощью кода». Как они это сделали?

Моя Попытка

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

Я тоже пытался process.argv , но это дает мне путь к исполняемому файлу, а не к исходной папке.

Шаги, чтобы воспроизвести мою попытку и проверить ее самостоятельно:

  1. Получите репозиторий и клонируйте его. (В нем всего 3 файла: index.js, index.html и package.json).
  2. Откройте эту папку в командной строке и запустите npm install
  3. Экспортируйте приложение electron, запустив npm run package-win его . это должно экспортировать исполняемый файл в [relative app path]/rlease-builds/windows-folder-electron-shortcut-win32-ia32/windows-folder-electron-shortcut.exe .
  4. Чтобы добавить ярлык Windows для приложения: В реестре Windows создайте этот:

HKEY_CLASSES_ROOTFoldershellRun In My Electron Appcommand

Вот шаг за шагом:

  • 4 a. Откройте «Редактор реестра» в Windows.
  • 4 б. Перейдите в HKEY_CLASSES_ROOTFoldershell новую папку и создайте ее под названием «Запуск в приложении My Electron».
  • 4 c. Внутри созданной папки создайте command папку.
  • 4 d. Дважды щелкните значение по умолчанию и измените его на полный путь к исполняемому файлу.

(В моем случае значение по умолчанию равно: C:Userselronappswindows-folder-electron-shortcutrlease-buildsPaste Folder Icon-win32-ia32Paste Folder Icon.exe . Убедитесь, что путь-это ВАШ путь к exe-файлу экспортируемого приложения.)

Когда вы закончите с шагом 4, это должно выглядеть примерно так:

введите описание изображения здесь

Результат:

При запуске приложения через ярлык папки он выдаст вам путь к исполняемому файлу, как и ожидалось, но не путь, по которому было запущено приложение, как показано на этом снимке экрана:

Запуск в моем электронном приложении

И теперь вы можете это проверить.

Любая помощь будет оценена по достоинству!

Комментарии:

1. Ваш вопрос хорошо написан, хорошо сделан 🙂 Возможно, стоит проверить, что внутри process.env , но, к сожалению, кроме этого, у меня нет других предложений.

2. @Джошуа Я ценю попытку помочь, спасибо!

Ответ №1:

В реестре добавьте это в значение вашей команды:

 "C:Userselronappswindows-folder-electron-shortcutrlease-buildsPaste Folder Icon-win32-ia32Paste Folder Icon.exe"  "%1"
 

Он "%1" передаст исходный каталог вашему электронному приложению.

Вы можете извлечь путь к каталогу в своем электронном приложении следующим образом:

 const exePath = process.argv[0];
const folderPath = process.argv[1];