Обновления
Как Lumen находит, проверяет и ставит новые версии, что вы при этом видите и что узнаёт сервер обновлений.
На этой странице
Как находятся обновления
Обновления - в окне Настройки (⌘,), раздел Обновления; туда же ведёт ⌘K → Настройки: Обновления. Отдельного пункта меню для проверки нет.
Спрашивать об обновлениях умеет только выпускная сборка: в неё вписаны адрес ленты обновлений и ключи её подписи. Сборка без адреса ничего не запрашивает и пишет: «У этой сборки нет адреса обновлений, поэтому она никогда их не запрашивает. Он есть у выпускных сборок.»
Лента - один статический файл со списком выпусков. Автоматическая проверка включена по умолчанию: в первый раз - не раньше чем через минуту после запуска, дальше - каждые 6 часов от прошлой проверки. Проверить сейчас спрашивает ленту сразу. Если выключить Проверять обновления автоматически, не будет ни таймера, ни запросов.
Раздел «Обновления»
В разделе - Версия, строка состояния и настройка Когда найдено обновление: Скачать и установить при выходе (по умолчанию) или Только сообщить. Во втором случае приложение пишет «Доступна версия …» и показывает кнопку Скачать. Скачанное обновление в любом случае ставится при выходе.
| Что написано | Что это значит |
|---|---|
| Установлена последняя версия (проверено …). | Новее нет |
| Версия … скачана и проверена. Она установится при выходе, когда все профили будут зашифрованы. | Появилась кнопка Установить сейчас… |
| Последняя проверка не удалась: … | Лента или архив не загрузились либо не прошли одну из проверок |
| …macOS запускает эту копию из временного места… | Перенесите Lumen в «Программы» и проверьте снова |
| …заменить приложение там, где оно лежит, нельзя… | Ваша учётная запись не может писать в папку приложения |
Как проверяется обновление
Обновление - целое приложение в zip-архиве, и ничего в нём не принимается на веру:
- Лента подписана Ed25519: пока подпись не сойдётся с ключом, встроенным в приложение, список выпусков не читается. Лента старше уже принятой отвергается.
- Берётся только выпуск новее установленного и подходящий для вашей macOS - более старый никогда.
- Размер архива, его SHA-256 и подпись Ed25519 должны совпасть с лентой.
- После выхода установщик внутри приложения проверяет архив заново, а затем у нового приложения - подпись кода (строго, вместе со всем вложенным кодом), идентификатор и номер версии. Если сборка подписана сертификатом разработчика Apple, новая версия должна быть подписана тем же разработчиком. Только после этого установщик снимает отметку карантина.
Когда ставится обновление
Только при выходе, который вы начали сами, - ⌘Q, через меню или Dock, - и только когда каждый профиль остановлен и зашифрован. Сначала приложение проверяет: ничего не работает, не запускается и не шифруется; ни один процесс профиля не пришлось завершать силой (выход ждёт такой процесс 30 секунд); на диске нет незашифрованных данных ни одного профиля. Если что-то не так, обновление ждёт следующего выхода, а при следующем запуске приложение скажет почему. Никогда - при выходе из учётной записи, перезагрузке и выключении Mac, а также после сбоя.
Установить сейчас… делает то же по вашей команде. Окно перечисляет, что остановится: профили с окнами, прогрев без окна, запуски и шифрование. Кнопка - Остановить, зашифровать и установить, а если ничего не запущено, Выйти и установить. Не пройдёт проверка - приложение не закроется: останется заблокированным и объяснит почему.
Установщик ждёт, пока закроются все процессы приложения, и сам ничего не завершает; через 10 минут он отступает до следующего выхода. Когда процессы закрылись, он меняет старое и новое приложение местами одной операцией и запускает новое.
Что сохраняется и как работает откат
Обновление заменяет только приложение. Хранилище - профили, пароли, история, данные сайтов - и настройки остаются в папке Library вашей учётной записи. Проверка в CI проходит этот путь целиком: новая сборка открывает хранилище старой и запускает профиль с данными сайтов, которые зашифровала старая. Старая версия, поставленная вручную поверх новой, не читает и не меняет файлы, записанные новой: «Файл … сохранён более новой версией Lumen…»
Если новое приложение не прошло проверку на месте или не запустилось, установщик возвращает прежнее и запускает его, а при следующем запуске появится сообщение: «Обновление … было установлено, но не запустилось, поэтому возвращена прежняя версия.» Если не удалось и это, прежняя версия остаётся рядом, с «(previous version)» в имени. Команды, которая возвращает прежнюю версию, нет. После удачного обновления раздел пишет «Обновлено до … (…).»
Что видит сервер обновлений
Под настройкой сказано: «Сервер обновлений видит IP-адрес этого Mac, время запроса и какое обновление скачано. Больше ничего не передаётся: ни идентификатора, ни профиля, ни прокси. Проверка никогда не идёт через прокси профиля.»
В запросе нет параметров, cookies и кэша, а заголовки одинаковы на любом Mac: User-Agent без номера версии и язык en. С проверкой лицензии обновления не связаны - её в приложении нет.
Заметки к выпуску
Под заголовком Что нового в … - заметки из ленты: простой текст, не веб-страница. Если заметок нет, написано «У этого выпуска нет заметок.»
Заметки к следующему выпуску уже собраны. Оба изменения касаются сборки без песочницы (окно Safari):
- раньше настройки служб Safari для профилей записывались в файл настроек Safari вашей учётной записи, который Safari не читает. Новая версия один раз, после первой разблокировки, убирает оттуда только значения, записанные Lumen и с тех пор никем не изменённые;
- окно Safari в каждом профиле хранит свою раскладку - размер и место окна, боковую панель, панель избранного, разделы стартовой страницы - в зашифрованных данных профиля. После обновления каждый профиль один раз откроется с раскладкой Safari по умолчанию.
Чего пока нет
- Установки в папку, куда может писать только администратор: приложение скажет, что установить туда нельзя.
- Обновлений частями: каждое обновление - целый подписанный архив.
- Обновления этим путём системного расширения для WebRTC через прокси.
Нашли ошибку или чего-то не хватает? Напишите нам.