Nikolay
Андрей
@RewriteH
Приветствую
Думаю надо создать флудилку)
Артем
всем привет! у кого есть опыт подписания и нотаризации electron приложений для macos?
такая проблема: использовал @electron/osx-sign и notarytool. процесс подписания и нотаразиции проходит успешно, но почему то у части тестеров приложение запускается, у части - нет. csrutil status - enabled у всех. поделитесь опытом, в какую сторону вообще копать?
Rewrite
Артем
Артем
Артем
Dmitry
Георгий
С этими маками одни проблемы))
У меня еще есть анимация при открытии приложения, на arm процессоре при билде под х64 выдается слайдшоу у тестировщиков XD
Георгий
Dmitry
Dmitry
universal - весит почти вдвое больше. скорее всего там два пакета в одном архиве
Георгий
Георгий
universal нельзя сбилдить под мак никак по идее
Dmitry
В свойствах приложения указывается тип сборки: Универсальное, Intel, процессор Apple
Dmitry
Это в релизе уже
Dmitry
Запускается быстрее, чем через эмулятор.
Георгий
Debugger
Здравствуйте! Прошу помочь, понять логику работы модуля fs. Есть приложение на электроне - магазин приложений, внутри несколько js-скриптов, html. Необходимо проверить появление файла в какой-то определенный промежуток времени. Допустим, запускается вызов внешней операции, далее запускается какой-то счетчик на 3 минуты и ожидается появление файла. Если файл появился, то отлично, если же, в течение отрезка времени - нет, то ошибка. Со временем разобрался, вопрос по проверке наличия файла - fs.existsSync(), но почему-то не могу отловить ситуацию - да/нет. Вопрос - почему?
Nikolay
Здравствуйте! Прошу помочь, понять логику работы модуля fs. Есть приложение на электроне - магазин приложений, внутри несколько js-скриптов, html. Необходимо проверить появление файла в какой-то определенный промежуток времени. Допустим, запускается вызов внешней операции, далее запускается какой-то счетчик на 3 минуты и ожидается появление файла. Если файл появился, то отлично, если же, в течение отрезка времени - нет, то ошибка. Со временем разобрался, вопрос по проверке наличия файла - fs.existsSync(), но почему-то не могу отловить ситуацию - да/нет. Вопрос - почему?
А что возвращает данная функция? Функция работает синхронно, может быть она отдает результат позже. fs.exists(), мб попробовать данный метод
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
Alex
Здравствуйте! Прошу помочь, понять логику работы модуля fs. Есть приложение на электроне - магазин приложений, внутри несколько js-скриптов, html. Необходимо проверить появление файла в какой-то определенный промежуток времени. Допустим, запускается вызов внешней операции, далее запускается какой-то счетчик на 3 минуты и ожидается появление файла. Если файл появился, то отлично, если же, в течение отрезка времени - нет, то ошибка. Со временем разобрался, вопрос по проверке наличия файла - fs.existsSync(), но почему-то не могу отловить ситуацию - да/нет. Вопрос - почему?
может проблема в пути? попробуй path.resolve(__dirname, ...) или руками полный путь прописать
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")? и потом проверять уже возвращенную структуру?
Rewrite
Debugger
Rewrite
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
Debugger
Я думаю человек раньше вообще никогда не писал на js
И вы абсолютно правы. Раньше немного писал на Питоне. Проект спустили сверху, он состоит из двух частей - электрон-гуи, фласк-бэкенд, отвечает за парсинг файла списка приложений. Задание до(пере)пилить под salt-установку. В основном, все работает, архитектора не устраивает быстрая смена надписи на кнопке "установить приложение" на "удалить", когда пакет ещё устанавливается.
Debugger
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
Огромное спасибо!
Вадим
Добрый день такой вопрос, есть приложение на электроне что-то по типу дневника питания со всеми сопутствующими подсчетами, каким образом его бы можно было перенести на мобилку ? если что никакие библиотеки для фронта не использовал
Alex
Veli
Veli
Veli
еще ionic есть, тоже тыщу лет назад смотрел, но репозиторий тоже активен
Вадим
Veli
капаситор, который выше рекомендовали, не смотрел? в интернетах пишут, что это буквально как электрон, только для мобилок
Ismoil
Телеграмм))
мммммммммммм
Sergey
Ratatata
Вадим
🅰️nimeCoder
Да юзеры и так сожрут,впервой чтоли
🅰️nimeCoder
Я тебя слепиль из того что биль
Dmitry
Иван
Товарищи
как сделать принудительное обновление приложения после n количества выбора варианта "установить позже"?
Dmitry
Принудительное обновление - плохая затея. Это может прервать работу пользователя. И это неприятно, как минимум. Я только отображал уведомление о том, что новая версия есть и кнопку "Обновить", которую пользователь может нажать тогда, когда будет готов и не выполняет важных задач.
🅰️nimeCoder
🅰️nimeCoder
Rewrite
🅰️nimeCoder
🅰️nimeCoder
подождет)))
🅰️nimeCoder
Пользователю нельзя давать выбор, иначе он может запутаться
Dmitry
eden
*я, который ломает совместимость с каждой версией*
😐
eden
кто-нибудь уже перекатывался на новую мак ос? У меня моё электрон приложение не запускается на ней 🤡
Я понимаю, что бета, но всё же...
🅰️nimeCoder
eden
eden
а пока не стейбл, что делать?