Sergey spbsite
запуская приложуху, например)
Григорий
мля после билда приложение больше не показывает иконку в трее 😂
Григорий
на старой версии 19.0.7
Григорий
Уважаемое сообщество, снова нуждаюсь в вашей помощи: проблему с taskbar иконкой решил , чисто для linux добавил в параметрs BrowserWindow и о чудо: оно заработало. Но теперь снова проблема с нотификейшнами (я использую стороннюю библиотеку node-notifier) - иконка не показывается, хотя вроде бы вчера каким-то макаром все заработало - использовал path.join(относительный_путь_к_иконке) но без __dirname.
кароч столкнулся с проблемой похожей как у тебя с иконкой в трее, когда-то давно я настроил иконку и все было ок, но потом переписал просто на path.join и перестало работать, но я не замечал т.к. в дев режиме все было ок оказывается этой суке удобнее всего вернуться из папки с кодом в корень, я тупо не понимаю как это работает))) path.join(__dirname, '../../../public/icon.png') если указать по нормальному path.join(__dirname, 'public','icon.png') то нифига не работает 😂
Григорий
смотри что возвращает)
Григорий
Григорий
path.join(__dirname, '..', '..', '..', 'public','icon.png')
Григорий
при том что path.resolve('public', 'icon.png') возвращает такой же путь, но когда делаю билд он не работает
Rewrite
на старой версии 19.0.7
Зачем ты вообще обновлялся
Rewrite
Григорий
Зачем ты вообще обновлялся
Чтобы работать на новой)))
Григорий
Все же стабильный релиз должен был быть))
Григорий
Но не понятно как внешние ссылки настроить)
Rewrite
Все же стабильный релиз должен был быть))
Никогда не обновляйся, если не знаешь зачем
maxim
Никогда не обновляйся, если не знаешь зачем
я вот так тоже думал а через пару лет глянул там уже версий 10 накидали... больно потом было обновляться
Григорий
Никогда не обновляйся, если не знаешь зачем
Так в целом все работает, только внешние ссылки не работают, какую-то доп защиту сделали
Григорий
я вот так тоже думал а через пару лет глянул там уже версий 10 накидали... больно потом было обновляться
Да, лучше под каждую обнову по 1 фиче переписывать. Чем через 2 года полностью все приложение
ALΣX
Привет) Решил таки вчера проблему с иконками, как оказалось (не уверен точно) проблема в том, что модуль Notifications (хоть я и использовал стороннюю для этого библиотеку) не мог получить доступ к иконке, которая была заархивирована со всем остальным содержимым в asap. Хотя подобной проблемы нет при использовании иконок и картинок в BrowserWindow или Tray. Решил следующим образом: 1. В package.json использовал свойство asarUnpack для отдельной распаковки папки с иконками (assets) во время создания архива с приложением (на случай, если отключение asar не ваш случай): "build": { ..., "asarUnpack": "assets/**/*", ... } 2. Через process.resourcesPath можно получить доступ к директории, где храниться архив asar и отдельно разархивированные файлы и папки через свойство asarUnpack (они находяться в отдельной папке app.asar.unpacked). 3. Обновил получение всех иконок с данной директории (зависимо от платформы). Для development mode данный вариант работать не будет, потому для него оставил прежний путь для получения иконок: function getIcon() { const iconBasePath = isDev ? path.join(__dirname, '../../../assets/') : path.join(process.resourcesPath, 'app.asar.unpacked/assets/'); if (os.platform() === 'darwin') { return path.join(iconBasePath, 'bizswoop.icns'); } if (os.platform() === 'win32') { return path.join(iconBasePath, 'bizswoop.ico'); } return path.join(iconBasePath, 'bizswoop.png'); } 4. Для интеграции иконок использовали модуль nativeImage. Так вот для библиотеки node-notifier стоит от него отказаться, по крайней мере для Windows OS (иконки в уведомлениях слишком маленького размера).
ALΣX
Протестровал на Windows 10 и Ubuntu, надеюсь, что на macOS тоже проблем не будет, сегодня проверю.
Григорий
как открыть через электрон папку в проводнике?
Григорий
у меня к примеру есть полный адресс и мне нужно чтобы открылась папка по этому адресу
Григорий
Через dialog пробовал?
ну это не совсем то, мне нужно чтобы папка открылась по пути
ALΣX
Хз, может попробовать вызвать какой-то из методов и передавать defaultPath именно тот, что тебе нужен, тогда он попробует открыть именно нужную директорию
Alexei
как открыть через электрон папку в проводнике?
Ради Христа, загугли, первый запрос тебе даст ответ
Григорий
Ради Христа, загугли, первый запрос тебе даст ответ
нуну) особенно когда не знаешь как правильно искать) но уже нашел, подсказали
Oleg
>как открыть через электрон папку в проводнике? >how open folder by electronjs
Григорий
теперь пробелы нужно замаскировать
Alexei
Какие то пакеты, какие то диалоги, когда электрон умеет это делать нативными средствами
Sergey
const {shell} = require('electron') shell.openPath('folderpath')
Григорий
Электрон
который тянет это с nodejs
Sergey
а человек задачу не полностью рассказал
Alexei
ну open делать может в 10 раз больше, чем shell.openPath
Не спорю, но ему пофиг, ему просто надо было папку открыть
Sergey
который тянет это с nodejs
насколько я знаю в nodejs нет такого апи
Григорий
а что рассказывать, есть путь и есть кнопка, нажал на кнопку открылась папка
Sergey
Не спорю, но ему пофиг, ему просто надо было папку открыть
я предпочитаю дать более широкий набор вариантов. чтобы человек уже сам разобрался. Но да
Sergey
require('child_process')
это не оно
Григорий
это не оно
в каком плане? он тоже октрывает папку
Sergey
child_process просто запускает субпроцесс
Alexei
Бесполезный разговор честно говоря, разберись немного в мат части, потом уже что то говори, это просто смешно сейчас
Sergey
“открыть папку” — запустить процесс/cli системного приложения с правильными аргументами и путем к директории
maxim
child_process просто запускает субпроцесс
так либа open его и юзает под капотом
Sergey
там дофига кода под капотом
Alexei
так либа open его и юзает под капотом
Мы сейчас про shell электроновский вроде как
Sergey
300строк специализации под системы
Григорий
Мы сейчас про shell электроновский вроде как
думаю shell тоже самое юзает под капотом
Alexei
Думаешь или знаешь?
Григорий
самое удивительное что все оижили когда по сути нашел решение
Oleg
Чет как-то у вас слишком уж токсично тут
Sergey
как видим там реализация на C++
Sergey
а для каждой системы своя реализация
Sergey
давайте и правда не токсичить
Lucas
спокойной ночи, ребята, я изучаю html, и я хотел бы знать, как я могу добавить или уменьшить эти два ввода времени с помощью html
Lucas
Григорий
у меня в проекте функции лежат в разных файлах, но их ответ нужно отправлять в renderer процесс, для этого необходимо использовать window.webContents.send главного окна как мне получить этот объект окна, чтобы из любой точки приложения я мог отправить инфу в renderer?
Григорий
а почему не используешь IPC?
ipc принимает событие, мне нужно отправить
Григорий
а почему не используешь IPC?
у меня прям родилась идея))) но мне она не нравится))
ALΣX
у меня прям родилась идея))) но мне она не нравится))
ну, у нас в проекте одно окно главное и оно находиться в глобальном скоупе, то есть к нему можно обратиться в любом месте через global
ALΣX
аналогичным образом обращается и к стору
Григорий
у меня тоже 1 окно главное
ALΣX
у меня тоже 1 окно главное
ну что-то типа есть в глобальном скоупе global.mainWindow потом global.mainWindow - присваиваем экземпляр BrowserWindow и обращаемся к нему в любом месте проекта
ALΣX
это как по аналогии с объектом window в браузере