#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
, но это дает мне путь к исполняемому файлу, а не к исходной папке.
Шаги, чтобы воспроизвести мою попытку и проверить ее самостоятельно:
- Получите репозиторий и клонируйте его. (В нем всего 3 файла: index.js, index.html и package.json).
- Откройте эту папку в командной строке и запустите
npm install
- Экспортируйте приложение electron, запустив
npm run package-win
его . это должно экспортировать исполняемый файл в[relative app path]/rlease-builds/windows-folder-electron-shortcut-win32-ia32/windows-folder-electron-shortcut.exe
. - Чтобы добавить ярлык 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];