ALΣX
имеется ввиду на гитхабе? не пробовал еще настраивать, но идея очень крутая, если это работает. спасибо, пойду гуглить!
ага, там уже есть готовый екшн https://github.com/marketplace/actions/electron-builder-action. Тоже не пробовал, но планирую переходить на него
🅰️nimeCoder
круто, я тоже проникся, на этом проекте
ну как там ?) есть жизнь с вашим лог анализатором ?
Vitali
Заглохло в ноль
Vitali
Приятно, что вспомнили
Vitali
У нас свои железячники
Vitali
И на них пока висит, пока не будет готовой железяки, работа по ПО не движется
Андрей
Есть кто переезжал на таури с электрона? Есть неприятные сюрпризы? Если кто на ру линуксах еще раскатывал будет славно (астра редось например)
🅰️nimeCoder
Так там много наверное сюрпризов если ты достаточно сильно юзаешь апи электрона
🅰️nimeCoder
Было бы все так хорошо, все бы свалили на таури. Пока ни один крупный игрок этого не сделал, я не видел ни одного приложения кроме чего то типа rust desk (и еще пару) но их никогда не юзал
Андрей
Так там много наверное сюрпризов если ты достаточно сильно юзаешь апи электрона
а какое у электора апи? Dialog и BrowserWindow ничем не хуже, в электроне только гибкости чуть больше (и то изощренной) ipc не менее удобный, вся соль все равно на fs проворачивается, а разницы между ними в ноде и расте нет. Меня подкупила производительность, емкость билда и хоть какая-то защита от реверс инжиниринга. Пока что не определился стоит ли в плюсы записать то что нативные браузерные движки использует, никак руки не дойдут на линуксах раскатить, чувствую там приплыть можно, а у основной массы заказчиков ру линуксы
🅰️nimeCoder
Хочешь защиту - облако, подписка
Андрей
Ну так то этим апи не ограничивается
Ну апишка большая, а из основного нужно только окно создать и события с фронта прослушать
Андрей
там разница заметна даже на сырых билдах и дело не в оптимизации
🅰️nimeCoder
не смотрел нагрузку в диспетчере?
Так, а что на неё смотреть. Везде браузер
🅰️nimeCoder
Сколкьо я бенчмарков не видел они в пределах погрешности обычно, что wails, что tauri и какой то гулон что сдох не родившись. Всегда была разница только в весе
Андрей
Хочешь защиту - облако, подписка
разного типа приложения есть, такого рода защиту не прокинуть в условные закрытые контура
🅰️nimeCoder
разного типа приложения есть, такого рода защиту не прокинуть в условные закрытые контура
Нодовский байткод, + обфускация, будет не проще чем реверсить раст
🅰️nimeCoder
А если ещё и ноду кастомную собрать что быстрее повеситься не имея исходника полностью соответствующего все офсетам и abi
Андрей
я если что не топлю за таури) года 2 на электроне сижу и беды не знаю, надеялся рил стори услышать может кто комм. проект переводил зачем и почему и что в итоге
🅰️nimeCoder
Да я понимаю, прост я лично не видел осоьо ничего. Мож кто-то и говорит и хочет, но по каким то причинам ещё не свалил (а ведь ну дискорд не так то прибить гвоздями вроде, да и там команда достаточная большая чтобы переехать относительно быстро)
🅰️nimeCoder
Вес конечно да, обычно очень меньше за счёт встроенного вебвью, в ущерб стабильности окружения (вебвью разный и версии по идее всегда его тоже разные)
🅰️nimeCoder
Вес конечно да, обычно очень меньше за счёт встроенного вебвью, в ущерб стабильности окружения (вебвью разный и версии по идее всегда его тоже разные)
Как я понял там ещё и апи не спешат нормальные клепать у этих вебвьюшек, так бы может уже и юзали бы их нормально как люди
Андрей
в расте проще с dll-ками работать или с котлином бонусом
🅰️nimeCoder
Как я понял там ещё и апи не спешат нормальные клепать у этих вебвьюшек, так бы может уже и юзали бы их нормально как люди
Думаю в этом тоже есть проблемы но эт уже от того же мелкософта и вебкита зависит. Есть ощущение что всем пофиг и делают просто на отъебись, типа чтоб хоть как то было, справку в приложении открывать
Андрей
Вес конечно да, обычно очень меньше за счёт встроенного вебвью, в ущерб стабильности окружения (вебвью разный и версии по идее всегда его тоже разные)
ну тут бы меня только механизмы рендеринга беспокоили наверное, и какие нибудь механизмы событий на зум, прокрутки. На условное апи js я бы не грешил, все равно babel транспилирует, а верстка вроде похуй.
ALΣX
Привет, хочу поделиться опытом (не реклама). Решили использовать Azure Trusted Signing ($10/мес) вместо EV сертификатов (из-за высокой стоимости) для подписания прил Electron под Windows. По сути, аналог OV Code Signing с набором репутации. После недели подписи нескольких релизов и тестов на 3 машинах набрали нужный уровень доверия: вчера выкатили обнову и оно удачно стало у 700+ пользователей. Плюсы: - экономия до 70% по сравнению с EV на 3 года; - возможность сгенерировать сертификаты не только для организации, но и для частных физлиц; - лимит: подпись 1000 файлов на месяц; - возможность сгенерировать тестовый сертификат; - намного проще отозвать старый сертификат и выпустить новый (хотя, они автоматом обновляются каждые 3 дня). Минусы: - нечеловеческая верификация: неделя ушла для подтверждения организации (с 5 попытки удалось указать данные и отправить документы, которые система приняла), для личного сертификата подтвердить личность так и не удалось; - отсутствие поддержки Microsoft в базовом плане вообще.
Идель Гатауллин
!спам
Идель Гатауллин
!спам
Alexey Filippov
всем ку кто-то использует реакт в электроне? у меня проблема с react-router-dom не могу настроить basepath
Alexey Filippov
хотя в dev моде все работает
Alexey Filippov
Alexey Filippov
AlexeyFilippov
Попробуй вместо BrowserRouter использовать HashRouter
Помог относительный путь в BrowseRoure basename=window.location.pathname
Анастасия
Нужны сотрудники на удалёнку, 2-3 часа в день. Пишите в личку, расскажу все подробности.
dimqqq
Добрый день, вопрос по обработке выхода из приложения электроном. Когда пользователь закрывает основное окно приложения, электрон, как я понимаю, сам высылает SIGTERM, и мой сервер с фронтовой частью, и сам процесс электрона завершаются. Как я могу сделать такое же поведение при закрытии экрана загрузки? Сейчас, когда я закрываю загрузочное окно, новое окно все равно появляется, т.е. код не останавливает работу. P.S. Экран загрузки и основной экран создаются двумя разными new BrowserWindow
dimqqq
app.quit()
Спасибо!
Борис
всем привет, есть какие то лучшие практики по работе с глобал стейтом electron + react?
Борис
trpc + state manager
trpc впервые слышу, посмотрел Имеется ввиду заменить электроновский ipc да?
Rewrite
trpc впервые слышу, посмотрел Имеется ввиду заменить электроновский ipc да?
trpc это обертка над ipc, которая добавляет type-safety для комфортного общения между фронтом
Борис
trpc это обертка над ipc, которая добавляет type-safety для комфортного общения между фронтом
Понял, спасибо. А если у меня бэк - stateful, нормально ли в нем создать стор и открыть его в renderer.ts для реакта?
Борис
может я неправильно оперирую терминами, под бэком имеется ввиду основной процесс
Rewrite
Понял, спасибо. А если у меня бэк - stateful, нормально ли в нем создать стор и открыть его в renderer.ts для реакта?
Да, стор есть в электроновском апи, а также можно использовать либы по типу electron-store
اسماعيل عصيد
Hi can you help me with this? During development it works fine. But after packaging it shows this error
Ramil
Hi can you help me with this? During development it works fine. But after packaging it shows this error
does this file actually exists in built version? does your build tool copies this file into build?
Alexey Filippov
Hi can you help me with this? During development it works fine. But after packaging it shows this error
we need to understand how this file is used. but the error is in relative paths. use __dirname or app.getAppPath() depending on the operating mode is.dev will help from the library import { is } from '@electron-toolkit/utils'
اسماعيل عصيد
The problem occurs if I add files to .asar. If I remove them it works fine.
Alexey Filippov
The problem occurs if I add files to .asar. If I remove them it works fine.
without context, no one can help you. what files, where exactly do you put them and how do you use them
Борис
does this file actually exists in built version? does your build tool copies this file into build?
Приложением можно брать файл и из файловой системы
Борис
Hi can you help me with this? During development it works fine. But after packaging it shows this error
If you app requires some file on device where it's running, you have several options: 1. In user manual say that user have to place file in app directory 2. Create file if it doesn't exist 3. Remove file dependency from app 4. Include file into build If you choose variant with file, you have to set path like Alexey said
Андрей
Всем Привет! Подскажите у меня есть некоторое приложение на електрон, мне нужно чтоб во время установки на винде дополнительно устанавляивать git как мне это сделать
eden
через какой-нибудь отдельный софт
Андрей
где мне почитать об этом
eden
где мне почитать об этом
я бы погуглил просто, я слишком давно этим занимался, моя инфа уже не актуальна( нашёл, что такое есть https://wixtoolset.org
Rewrite
где мне почитать об этом
Кейс не уникальный, в репе электрон должны быть issue / discussion на эту тему
Георгий
Привет, просто через nsis кастомный установщик сгенерить
https://nsis.sourceforge.io/Docs/ https://www.electron.build/nsis.html
Андрей
https://nsis.sourceforge.io/Docs/ https://www.electron.build/nsis.html
Подскажите есть ли где то гайд как сгенерить
Георгий
Георгий
Подскажите есть ли где то гайд как сгенерить
Само подключение .nsh файла к билду приложения происходит одной строчкой в конфиге electron-builder
Андрей
Верно ли я понял что тут nsis: artifactName: ${name}-${version}-setup.${ext} shortcutName: ${productName} uninstallDisplayName: ${productName} createDesktopShortcut: always нужно просто добавить runAfterInstall: путь до скрипта у меня с подключением проблема
Андрей
блин бьюсь уже несколько часов не как не могу понять что не так вот конфиг appId: com.electron.app productName: dockumento-oborot directories: buildResources: build files: - '!**/.vscode/*' - '!src/*' - '!electron.vite.config.{js,ts,mjs,cjs}' - '!{.eslintignore,.eslintrc.cjs,.prettierignore,.prettierrc.yaml,dev-app-update.yml,CHANGELOG.md,README.md}' - '!{.env,.env.*,.npmrc,pnpm-lock.yaml}' - '!{tsconfig.json,tsconfig.node.json,tsconfig.web.json}' asarUnpack: - resources/** win: executableName: dockumento-oborot nsis: artifactName: ${name}-${version}-setup.${ext} shortcutName: ${productName} uninstallDisplayName: ${productName} createDesktopShortcut: always script: 'install-script.nsi' mac: entitlementsInherit: build/entitlements.mac.plist extendInfo: - NSCameraUsageDescription: Application requests access to the device's camera. - NSMicrophoneUsageDescription: Application requests access to the device's microphone. - NSDocumentsFolderUsageDescription: Application requests access to the user's Documents folder. - NSDownloadsFolderUsageDescription: Application requests access to the user's Downloads folder. notarize: false dmg: artifactName: ${name}-${version}.${ext} linux: target: - AppImage - snap - deb maintainer: electronjs.org category: Utility appImage: artifactName: ${name}-${version}.${ext} npmRebuild: false publish: provider: generic url: https://example.com/auto-updates electronDownload: mirror: https://npmmirror.com/mirrors/electron/ вот скрипт !include "MUI2.nsh" OutFile "$PRODUCT_NAME-$VERSION-setup.exe" InstallDir "$PROGRAMFILES\$PRODUCT_NAME" Page directory Page instfiles Section "Main" ; Здесь можно добавить действия при установке MessageBox MB_OK "Установка завершена!" SectionEnd но все равно ошибка
Андрей
⨯ C:\Users\andrey\AppData\Local\electron-builder\Cache\nsis\nsis-3.0.4.1\Bin\makensis.exe process failed ERR_ELECTRON_BUILDER_CANNOT_EXECUTE Exit code: 1 Output: Command line defined: "APP_ID=com.electron.app" Command line defined: "APP_GUID=f8941786-352c-5c22-bea5-7886c3ac4a8f" Command line defined: "UNINSTALL_APP_KEY=f8941786-352c-5c22-bea5-7886c3ac4a8f" Command line defined: "PRODUCT_NAME=dockumento-oborot" Command line defined: "PRODUCT_FILENAME=dockumento-oborot" Command line defined: "APP_FILENAME=dockumento-oborot" Command line defined: "APP_DESCRIPTION=��������� ������" Command line defined: "VERSION=1.0.0" Command line defined: "PROJECT_DIR=C:\Users\andrey\Desktop\share-desctop" Command line defined: "BUILD_RESOURCES_DIR=C:\Users\andrey\Desktop\share-desctop\build" Command line defined: "APP_PACKAGE_NAME=dockumento-oborot" Command line defined: "MUI_ICON=C:\Users\andrey\Desktop\share-desctop\build\icon.ico" Command line defined: "MUI_UNICON=C:\Users\andrey\Desktop\share-desctop\build\icon.ico" Command line defined: "APP_32=C:\Users\andrey\Desktop\share-desctop\dist\dockumento-oborot-1.0.0-ia32.nsis.7z" Command line defined: "APP_32_NAME=dockumento-oborot-1.0.0-ia32.nsis.7z" Command line defined: "APP_32_HASH=F0DE5F6FC03E495EE92C630A5094A1B42DCFBF1E62F0291881E6C13EC22EDD9BBFCC4634C79DBB305E0FD5F67BFDBAE90DC9FB8B88FA58E53BE7D7074B6859CD" Command line defined: "APP_32_UNPACKED_SIZE=332484" Command line defined: "COMPANY_NAME=bars_skif@mail.ru" Command line defined: "APP_INSTALLER_STORE_FILE=dockumento-oborot-updater\installer.exe" Command line defined: "COMPRESSION_METHOD=7z" Command line defined: "ONE_CLICK" Command line defined: "RUN_AFTER_FINISH" Command line defined: "SHORTCUT_NAME=dockumento-oborot" Command line defined: "UNINSTALL_DISPLAY_NAME=dockumento-oborot" Command line defined: "RECREATE_DESKTOP_SHORTCUT" Command line defined: "ESTIMATED_SIZE=332483" Command line defined: "COMPRESS=auto" Command line defined: "UNINSTALLER_OUT_FILE" Processing config: C:\Users\andrey\AppData\Local\electron-builder\Cache\nsis\nsis-3.0.4.1\nsisconf.nsh Processing script file: "<stdin>" (UTF8) warning 6000: unknown variable/constant "PRODUCT_NAME" detected, ignoring (<stdin>:80) Error output: Error: warning treated as error failedTask=build stackTrace=Error: C:\Users\andrey\AppData\Local\electron-builder\Cache\nsis\nsis-3.0.4.1\Bin\makensis.exe process failed ERR_ELECTRON_BUILDER_CANNOT_EXECUTE
Георгий
⨯ C:\Users\andrey\AppData\Local\electron-builder\Cache\nsis\nsis-3.0.4.1\Bin\makensis.exe process failed ERR_ELECTRON_BUILDER_CANNOT_EXECUTE Exit code: 1 Output: Command line defined: "APP_ID=com.electron.app" Command line defined: "APP_GUID=f8941786-352c-5c22-bea5-7886c3ac4a8f" Command line defined: "UNINSTALL_APP_KEY=f8941786-352c-5c22-bea5-7886c3ac4a8f" Command line defined: "PRODUCT_NAME=dockumento-oborot" Command line defined: "PRODUCT_FILENAME=dockumento-oborot" Command line defined: "APP_FILENAME=dockumento-oborot" Command line defined: "APP_DESCRIPTION=��������� ������" Command line defined: "VERSION=1.0.0" Command line defined: "PROJECT_DIR=C:\Users\andrey\Desktop\share-desctop" Command line defined: "BUILD_RESOURCES_DIR=C:\Users\andrey\Desktop\share-desctop\build" Command line defined: "APP_PACKAGE_NAME=dockumento-oborot" Command line defined: "MUI_ICON=C:\Users\andrey\Desktop\share-desctop\build\icon.ico" Command line defined: "MUI_UNICON=C:\Users\andrey\Desktop\share-desctop\build\icon.ico" Command line defined: "APP_32=C:\Users\andrey\Desktop\share-desctop\dist\dockumento-oborot-1.0.0-ia32.nsis.7z" Command line defined: "APP_32_NAME=dockumento-oborot-1.0.0-ia32.nsis.7z" Command line defined: "APP_32_HASH=F0DE5F6FC03E495EE92C630A5094A1B42DCFBF1E62F0291881E6C13EC22EDD9BBFCC4634C79DBB305E0FD5F67BFDBAE90DC9FB8B88FA58E53BE7D7074B6859CD" Command line defined: "APP_32_UNPACKED_SIZE=332484" Command line defined: "COMPANY_NAME=bars_skif@mail.ru" Command line defined: "APP_INSTALLER_STORE_FILE=dockumento-oborot-updater\installer.exe" Command line defined: "COMPRESSION_METHOD=7z" Command line defined: "ONE_CLICK" Command line defined: "RUN_AFTER_FINISH" Command line defined: "SHORTCUT_NAME=dockumento-oborot" Command line defined: "UNINSTALL_DISPLAY_NAME=dockumento-oborot" Command line defined: "RECREATE_DESKTOP_SHORTCUT" Command line defined: "ESTIMATED_SIZE=332483" Command line defined: "COMPRESS=auto" Command line defined: "UNINSTALLER_OUT_FILE" Processing config: C:\Users\andrey\AppData\Local\electron-builder\Cache\nsis\nsis-3.0.4.1\nsisconf.nsh Processing script file: "<stdin>" (UTF8) warning 6000: unknown variable/constant "PRODUCT_NAME" detected, ignoring (<stdin>:80) Error output: Error: warning treated as error failedTask=build stackTrace=Error: C:\Users\andrey\AppData\Local\electron-builder\Cache\nsis\nsis-3.0.4.1\Bin\makensis.exe process failed ERR_ELECTRON_BUILDER_CANNOT_EXECUTE
Тут же написано в чём проблема