Андрей
@RewriteH Приветствую Думаю надо создать флудилку)
Michael
Момент перед смертью ;)
тогда кто такие зомби ?) ...
Nikolay
тогда кто такие зомби ?) ...
Те кто не сейчас, если коротко
Артем
всем привет! у кого есть опыт подписания и нотаризации electron приложений для macos? такая проблема: использовал @electron/osx-sign и notarytool. процесс подписания и нотаразиции проходит успешно, но почему то у части тестеров приложение запускается, у части - нет. csrutil status - enabled у всех. поделитесь опытом, в какую сторону вообще копать?
Rewrite
microsoft teams
Попробуйте залить в гугл доки и скачать оттуда
Артем
Качают через телеграмм?
это имеет значение?
Rewrite
это имеет значение?
Да, когда с мессенджеров качаешь то иногда не заводится
Георгий
Да, когда с мессенджеров качаешь то иногда не заводится
Как раз потратил хз сколько часов, пока добрые люди отсюда не сказали в чём дело 0)
Георгий
С этими маками одни проблемы))
У меня еще есть анимация при открытии приложения, на arm процессоре при билде под х64 выдается слайдшоу у тестировщиков XD
Dmitry
universal - весит почти вдвое больше. скорее всего там два пакета в одном архиве
Георгий
universal нельзя сбилдить под мак никак по идее
Dmitry
universal нельзя сбилдить под мак никак по идее
Можно, я собирал все три варианта. Остановился на том, что собираю отдельно под Intel и под M3
Dmitry
В свойствах приложения указывается тип сборки: Универсальное, Intel, процессор Apple
Dmitry
Это в релизе уже
Dmitry
Запускается быстрее, чем через эмулятор.
Георгий
В свойствах приложения указывается тип сборки: Универсальное, Intel, процессор Apple
Надо будет протестить, хотя билды по отдельности всё равно выглядят выигрышнее
Debugger
Здравствуйте! Прошу помочь, понять логику работы модуля fs. Есть приложение на электроне - магазин приложений, внутри несколько js-скриптов, html. Необходимо проверить появление файла в какой-то определенный промежуток времени. Допустим, запускается вызов внешней операции, далее запускается какой-то счетчик на 3 минуты и ожидается появление файла. Если файл появился, то отлично, если же, в течение отрезка времени - нет, то ошибка. Со временем разобрался, вопрос по проверке наличия файла - fs.existsSync(), но почему-то не могу отловить ситуацию - да/нет. Вопрос - почему?
Debugger
попробую описать логику самого магазина приложений: - изначально, магазин работал с локальными менеджерами пакетов (apt, dnf, snap, flat...), и тут проблем с контролем успешности/неуспешности установки пакетов не было... ловим код возврата и радуемся... - далее, к проекту подключили salt, теперь магазин делает запрос на salt-master и тот, удаленно разворачивает пакеты на конкретной локальной машине... и вот тут уже проблема с определением успешности установки... магазин делает запрос salt call, в сторону сервера salt и тут у нас 0 (успех) всегда, а вот менеджеры пакетов уже запускаются удаленно, под рутом, и отследить успех выполнения установки в сеансе пользователя, где работает сам магазин, сложнее... - как костыль, было представлено решение - скрипт установки приложений на salt-master, создает файл /tmp/app_ok (успешная устнаовка/удаление) или /tmp/app_fail (ошибка при установке/удалении) на локальной машине, а вот уже магазин приложений проверяет наличие этого файла и "зажигает" баннер - успешно/ошибка... как-то так )))
Debugger
примерный скрипт проверки наличия файлов: https://pastebin.com/7p94g5ZR
Debugger
я указал: // Проверяем наличие файлов-флагов const app_ok = fs.exists('/tmp/app_ok.lock'); const app_fail = fs.exists('/tmp/app_fail.lock');
Debugger
результат выполнения: такое ощущение, конструкция fs.exists().ok или fs.existsSync().ok выдает неверный результат, ибо, при проверке "руками" (башем) - какой-то из файлов в /tmp обязательно присутствует
Debugger
и, по сути, у меня просто отрабатывает тайм-аут (три минуты) и дальше флаг, что приложение не установилось... хотя приложение успешно установлено
Debugger
наткнулся на обсуждение проблемы в работе fs.exists(Sync) на гитхабе electron, там советуют использовать fs.stat, т.к. эти методы - устаревшие... теперь вопрос, fs.stat использует обратный вызов для обработки результатов сбора статистики файла... но мне данный способ не подходит ) возможно ли использовать следующую конструкцию: check-file-exists = fs.stat("path/to/file")? и потом проверять уже возвращенную структуру?
Debugger
import fs from ‘fs-extra’ const fileStats = await fs.stat(path)
а ловить ошибку, при отсутствии файла?
Debugger
Попробовал сей вариант: installation.on('close', code => { if (code == 0) { // Засекаем время ожидания (3 секунды) var startTime = Date.now(); var endTime = startTime + 3 * 60 * 1000; // Проверка наличия файла-флага установки while (true) { var app_ok = false; var app_fail = false; // проверяем наличие файла-флага - успешной установки fs.stat("/tmp/app_ok.lock", (err, stats) => { if (!err) { app_ok = true; } }) // проверяем наличие файла-флага - ошибки установки fs.stat("/tmp/app_fail.lock", (error, stats) => { if (!error) { app_fail = true; } }) if (app_ok) { set_app_installed(true, type) break; } else if (app_fail) { set_app_installed('failed_install', type) break; } else { // Проверяем, не прошло ли 3 минуты if (Date.now() >= endTime) { // Время вышло set_app_installed('failed_install', type) break; } }
Debugger
Процесс установки (вернее, конструкция while true {}) чуть не положил ВМ
Sergey
использовать async / await или Promise вам религия не позволяет?
No
использовать async / await или Promise вам религия не позволяет?
Я думаю человек раньше вообще никогда не писал на js
Debugger
Я думаю человек раньше вообще никогда не писал на js
И вы абсолютно правы. Раньше немного писал на Питоне. Проект спустили сверху, он состоит из двух частей - электрон-гуи, фласк-бэкенд, отвечает за парсинг файла списка приложений. Задание до(пере)пилить под salt-установку. В основном, все работает, архитектора не устраивает быстрая смена надписи на кнопке "установить приложение" на "удалить", когда пакет ещё устанавливается.
Debugger
использовать async / await или Promise вам религия не позволяет?
Так что, религия тут не при чём. Задача, которую нужно решить
Sergey
что то типа такого вам нужно installation.on('close', async (code) => { if (code == 0) { try { await checkLockFile(3000, 100); set_app_installed(true, type); } catch (err) { set_app_installed(err.message, type) } } } async function checkLockFile(timeout, interval) { return new Promise((resolve, reject) => { const timeoutId = setTimeout(() => reject(new Error('timeout')), timeout); setInterval(() => { // проверяем наличие файла-флага - успешной установки fs.stat("/tmp/app_ok.lock", (err, stats) => { if (!err) { clearTimeout(timeoutId); return resolve(); } }); // проверяем наличие файла-флага - ошибки установки fs.stat("/tmp/app_fail.lock", (err, stats) => { if (!err) { return reject(new Error('FAIL file exists')); } }) }, interval); }); }
Debugger
Огромное спасибо!
Вадим
Добрый день такой вопрос, есть приложение на электроне что-то по типу дневника питания со всеми сопутствующими подсчетами, каким образом его бы можно было перенести на мобилку ? если что никакие библиотеки для фронта не использовал
Veli
еще ionic есть, тоже тыщу лет назад смотрел, но репозиторий тоже активен
Вадим
для плейн жаваскрипта есть nativescript, но не знаю, насколько он актуален (смотрел очень давно)
Благодарю за ответ, посмотрел на nativesript буду пробовать на него перейти
Veli
капаситор, который выше рекомендовали, не смотрел? в интернетах пишут, что это буквально как электрон, только для мобилок
Ismoil
Телеграмм)) мммммммммммм
Ratatata
Как раз таки груженный будет конкретно
Говорят flutter очень производительный ещё. но там dart)
🅰️nimeCoder
Да юзеры и так сожрут,впервой чтоли
🅰️nimeCoder
Я тебя слепиль из того что биль
Иван
Товарищи как сделать принудительное обновление приложения после n количества выбора варианта "установить позже"?
Георгий
Товарищи как сделать принудительное обновление приложения после n количества выбора варианта "установить позже"?
У меня лично система по дате выстроена, на беке хранится дата регистрации новой версии приложения. Я ее подтягиваю, сравниваю с текущей, если прошло больше недели, то даже не спрашиваю о том, хочет ли пользователь получать обновление
Георгий
Товарищи как сделать принудительное обновление приложения после n количества выбора варианта "установить позже"?
А вообще самый простой вариант это записывать в конфиг каждый раз количество нажатий на кнопку, ну и по нему потом смотреть
Dmitry
Принудительное обновление - плохая затея. Это может прервать работу пользователя. И это неприятно, как минимум. Я только отображал уведомление о том, что новая версия есть и кнопку "Обновить", которую пользователь может нажать тогда, когда будет готов и не выполняет важных задач.
Dmitry
Пользователь не знает что ему надо, а мы знаем Винлокер с таймером 1 мин на обновление
Например, я делаю приложение для операторов колл-центра. Будет очень нехорошо, если приложение принудительно обновится во время разговора с клиентом или во время оформления документов.
🅰️nimeCoder
подождет)))
Dmitry
шиндовс обновлятся, мы чем хуже
Если ты имел в виду Windows, то самопроизвольно он не обновляется.
🅰️nimeCoder
Если ты имел в виду Windows, то самопроизвольно он не обновляется.
ну я бы не сказал) это если вовремя отложить и др. В ином случае обычно ждет ожидание на не определенный срок
🅰️nimeCoder
Пользователю нельзя давать выбор, иначе он может запутаться
Dmitry
Пользователю нельзя давать выбор, иначе он может запутаться
Как вариант, обновлять по завершению работы приложения.
eden
*я, который ломает совместимость с каждой версией* 😐
eden
кто-нибудь уже перекатывался на новую мак ос? У меня моё электрон приложение не запускается на ней 🤡 Я понимаю, что бета, но всё же...
eden
🅰️nimeCoder
тебе написать?
да, отчет по результатам
eden
а пока не стейбл, что делать?
Георгий
а пока не стейбл, что делать?
В навате сидеть, кушать плов, и ждать пока выкатят, возможно, обнову для электрона