Vadim
Понял, спасибо попробую. Глобальная это через __dirname ?
Та не, просто в теле модуля, не оборачивая в функцию
Stanislav
У вас собственно ручный сборщик? Или electron-build / electron-packager? Какую библиотеку вы меняете в node_modules?
"electron-builder": "^20.19.2", менял метод executeMakensis в файле NsisTarget.js в библиотеке app-builder-lib
Stanislav
Просто добавил эту строчку
Anton
"electron-builder": "^20.19.2", менял метод executeMakensis в файле NsisTarget.js в библиотеке app-builder-lib
Ну попробуйте ишью написать. Или пул реквест предложить. Можно еще попробовать переделываать кодировку файла чем-нибудь при сборке и подсовывать в той, которую он требует.
Anton
Та не, просто в теле модуля, не оборачивая в функцию
Блин, а ведь помогло)) И как с этим бороться, вернее интересно с чем связан такой глюк, чтобы хотя бы ишью написать. Я вставлял через nativeImage.createFromPath(path)
Anton
Хотя нет, через какое- то время всё-равно вылетает
Vadim
(((
Anton
В любом случае, спасибо. Буду исследовать дальше)
Anton
Может будет кому-то полезно. Объект трей хранился внутри функции создания трей(Функция вызывалась только один раз при старте). Вынес в глобальную переменну и все стало стабильно. Как это работает - хз. Может проблема в сборщике мусора, который удаляет ссылку, которая больше не используется и это как-то влияет на инстанс Tray... без понятия.
Anton
Anton
Спасибо)
Vadim
И да, это связано со сборщиком мусора
Vadim
И это не пофиксят, это особенность NodeJS
Anton
Ну я думал ты так и сделал после моего совета... Рад что хоть дал направление и у тебя все получилось) Удачи)
Ну я по совету просто начал хранить ссылку на путь иконки в другом месте и просто строкой(Может не правильно понял). А потом уже начал дальше думать, что может влиять. Я просто не до конца понимаю механизм, что происходит. Получается чистится единственная ссылка на этот экземпляр tray. Внутренний механизм общается только с нативной частью где-то в кишках. Но фиг с ним чистилось и чиститься. Кто вызывает метод destroy() у tray в этот момент, такое чувство, что когда объект удаляется, перед удалением вызывается метод destroy(). Или происходит сборка мусора сначала в движке node.js -> а потом как снежный ком происходит чистка где-то в нативной части. Надо будет как-то почитать про сборщик поподробнее) И про мост между нативной частю и node.js. А то вдруг я вообще какой-то бред говорю)
Kostya
Всем привет я новичок никто не подскажет нужно создать декстопное приложение с хранилищем(если быть точнее парсер его история успещных выполнение) Меня интересует как историю сделать? Встроенную базу создать?
Stanislav
Всем привет. У меня в Windows имя профиля на русском языке. При сборке проекта запускается файл makensis.exe в которой летит конфиг в кодировке utf8, но по-умолчанию программа в этой кодировке не работает, отсюда ошибки типа "Plugin not found..." из-за неверного путя к необходимым файлам. Если отредактировать библиотеки в node_modules так, чтобы программа makensis.exe запускалась с поддержкой utf8, то проблема уходит. Вопрос: есть ли нормальное решение?
В общем, если будет кому интересно, то решение в следующем. Достаточно изменить переменную окружения при сборке ELECTRON_BUILDER_CACHE, подставив путь, не содержащий не ASCII символы. Например, так: cross-env ELECTRON_BUILDER_CACHE=./cache electron-builder На страничке гитхаба electron-builder есть пару Issue с замечаниями, но разработчиков это мало волнует (возможно есть какие-то причины)
Electron.js releases
v7.0.0-nightly.20190721 https://github.com/electron/electron/releases/tag/v7.0.0-nightly.20190721 v7.0.0-nightly.20190721
Electron.js releases
v7.0.0-nightly.20190722 https://github.com/electron/electron/releases/tag/v7.0.0-nightly.20190722 v7.0.0-nightly.20190722
Илья
как исправить?
Илья
возникло при попытке упаковать приложение electron-packager
Electron.js releases
v7.0.0-nightly.20190723 https://github.com/electron/electron/releases/tag/v7.0.0-nightly.20190723 v7.0.0-nightly.20190723
Electron.js releases
v5.0.8 https://github.com/electron/electron/releases/tag/v5.0.8 v5.0.8
Vlad
Всем привет, подскажите , кто-то работал в електроне с flash?
Vlad
Пытаюсь проиграть флеш на странице, древняя страница, но електрон не находит плагин
Vlad
Pepflashplayer плагин , который как раз и занимается флешем
Anton
Pepflashplayer плагин , который как раз и занимается флешем
Привет. Такое описание читали, как его завести? https://electronjs.org/docs/tutorial/using-pepper-flash-plugin
Vlad
Привет. Такое описание читали, как его завести? https://electronjs.org/docs/tutorial/using-pepper-flash-plugin
Спасибо за ответ, уже читал все что Гугл выдает, но дальше получаю ошибку , плагин не найден. Может также зависит от 32 или 64 битной пеперфлеш , но как я не пробовал , всегда ошибка
Electron.js releases
v7.0.0-nightly.20190724 https://github.com/electron/electron/releases/tag/v7.0.0-nightly.20190724 v7.0.0-nightly.20190724
Anton
Ребят, существует система конфига, мне нужно сохранять конфиг в файл, как мне правильно это сделать перед закрытием программы? window.beforeunload не совсем помогает, если закрывать его через диспетчер, либо же просто выключить компьютер - этот самый конфиг тупа не сохранится. Кто сталкивался с подобным?
Недавно лазил по документации. И вспомнил о вопросе. Для подстраховки можно использовать powerMonitor чтобы перед выключением дополнительно сохранять настройки. Вдруг будет полезно https://electronjs.org/docs/api/power-monitor
Vadim
@arxanter Там же вроде есть экшн у апы, перед выгрузкой?
Anton
есть before-quit event. Но просто как еще одна возможность дополнительно чекнуть и сохранить настройки. Для параноиков)
Anton
Привет. Вопрос по гарячим клавишам в документации написано: You can use the Menu module to configure keyboard shortcuts that will be triggered only when the app is focused. собственно я так и сделал. Создал меню с гарячими клавишами. Но часть работает, а часть нет. Стандартные по типу: 'Ctrl+C', 'Ctrl+V', 'Ctrl+A' не работают. А такие как 'Ctrl+G', 'Ctrl+N' - работают хорошо. При этом нажатие на сам пункт меню отрабатывает хорошо
Danila
А зачем вы переопределяете стандартные системные hotkeys?
Danila
это плохая практика
Завтра
^
Anton
я не переопределяю, мне нужен ивент когда они отработают
S
Привет. Вопрос по гарячим клавишам в документации написано: You can use the Menu module to configure keyboard shortcuts that will be triggered only when the app is focused. собственно я так и сделал. Создал меню с гарячими клавишами. Но часть работает, а часть нет. Стандартные по типу: 'Ctrl+C', 'Ctrl+V', 'Ctrl+A' не работают. А такие как 'Ctrl+G', 'Ctrl+N' - работают хорошо. При этом нажатие на сам пункт меню отрабатывает хорошо
по этой теме я очень много гуглил и пришел к выводу что самый легкий вариант поставить autohotkey , включать его в свой инсталлер и при открытии приложения через childprocess запускать скрипт который отлавливает сочетанию любых клавиш , даже системных и возвращать результат. А так в электроне нет доступа к системным комбинациям клавиш
Anton
это трындец... я раньше это отслежывал в рендер процессе, и решил переписать, что бы все нативненько было...
Anton
@solicitous_mr мож что посоветуешь?
Vadim
Я читал, и даже делал)
Vadim
Но дать код не могу, NDA
Vadim
Какие Оськи нужны, тк там разные способы?
Anton
я код не прошу :) только направление винда, линукс, мак
Vadim
я код не прошу :) только направление винда, линукс, мак
Linux: https://github.com/mixalbl4-127/xinput-mouse-key-logger Я делал форк и правил, у меня другая задача была.
Vadim
Для windows на сях писал, юзаю либу windows.h(SetWindowsHookEx)
Kolpakov
Menu.setApplicationMenu( Menu.buildFromTemplate([ { label: 'View', submenu: [ { label: 'Reload', accelerator:'CommandOrControl+R', click: (menuItem, browserWindow) => { console.info(`-- app reload: call --`); const isPaymentTerminalIdle = paymentTerminalProvider.isIdle(); if (isPaymentTerminalIdle) { browserWindow.webContents.reload(); } } }, {type: 'separator'}, {role: 'resetzoom'}, {role: 'zoomin'}, {role: 'zoomout'}, {type: 'separator'}, {role: 'togglefullscreen'}, {type: 'separator'}, {role: 'toggledevtools'} ] }, ]) );
Kolpakov
на сколько я понимаю, с копированием можно поступить так же
Anton
Для windows на сях писал, юзаю либу windows.h(SetWindowsHookEx)
ок, я понял. Мне проще это все на фронте сделать. Спасибо
Vadim
Да, каждый юзает свое)
Anton
я без ролей прописывал
Vadim
А так да, это лучшее решение(если работает)
Anton
но и роль не сильно помогла
Kolpakov
ну, у меня в проде работает. хотя и не со случаем "copy"
Anton
все работает отлично кроме нескольких...
Anton
но вопрос не понял по поводу файлоы
Исмаил
и есть вопрос всем) добавил приложение в автозапуск, работает, но мне нужно чтобы оно запускалось в tray тоесть нижнем тулбаре, а у меня оно просто раскрывается, можете подсказать как это реализовать? как сделать сам tray знаю, но чтобы приложение при автозапуске появилось там, и не открывалось само незнаю
Исмаил
но вопрос не понял по поводу файлоы
вообщем у меня была такая проблема, если юзер у себя в директории жмет ctrl + c на файлы, тоесть ложит их себе в клипборд, и хочет вставить в мое приложение, то я не могу достать файлы с клипборда, или пути к ним
Исмаил
только на маке смог достать пути, на линуксе и винде нивкакую
Исмаил
и везде где гуглил говорили никак, можно только текст доставать а файлы или пути к ним нет, вот подумал если у вас это как то реализовано, то мне бы сильно помогло
Anton
не, сорян
Исмаил
вот мне кажется это странным, что невозможно достать пути к файлам в клипборде
Исмаил
даже в том же самом vscode или даже в слаке это не реализовано
Исмаил
даже в том же самом vscode или даже в слаке это не реализовано
поэтому своим сказал что это невозможно сделать
Исмаил
у меня такое есть
ого, можете дать направление?
Kolpakov
у меня такое есть
создаёшь Tray, не создаёшь браузер виндов...
Kolpakov
и для мака if (app.dock) { app.dock.hide(); // Don't show the app in the doc }
Исмаил
создаёшь Tray, не создаёшь браузер виндов...
а как понять что создавать? тоесть если он дабл кликает на приложение то нужно виндоу
Исмаил
ну так и создавать его при даблклике
блин) а у меня какой то ивент есть? на дабл клик ярлыка
Исмаил
я просто недавно только начал на электроне, еще не совсем разобрался