Обновления приложения
Новую версию приложение находит само и предлагает установить её одной кнопкой. Если автоустановка недоступна, остаётся ручной путь: скачать файл и поставить поверх.
Как приложение узнаёт о новой версии
При запуске приложение читает манифест latest.json из папки, откуда лендинг раздаёт сборки, и сравнивает его версию со своей. Обновление предлагается, только если версия в манифесте больше: сборка с прежней версией не прилетит никому.
Если версия новее, сверху по центру окна появляется плашка «Обнаружена свежая версия» с кнопкой «Подробнее» — она открывает раздел обновлений. Крестик убирает плашку до следующего запуска. Автопроверку можно выключить тумблером: тогда версия проверяется только кнопкой в разделе.
Раздел «Настройки → Обновления»
Здесь видно, какая версия установлена и какая лежит на сервере, а рядом — заметки о выпуске: они показываются списком по пунктам. Файл предлагается под вашу платформу, с размером и контрольной суммой. Проверка идёт при входе в раздел; результат, полученный при запуске, перепроверяется, только если ему больше пяти минут.
Адрес сервера обновлений по умолчанию — та же папка, откуда лендинг раздаёт дистрибутивы. Его можно поменять в этом же разделе; пустое поле возвращает встроенный адрес.
Автоустановка на Mac
Кнопка «Скачать и установить» в собранном приложении делает всё сама: скачивает файл с прогрессом в карточке, сверяет контрольную сумму, просит сервер начать установку и закрывается.
Ставит обновление не само приложение — оно не может заменить запущенный бандл. Дальше работает маленький скрипт установки:
- дожидается выхода приложения;
- распаковывает архив и отодвигает текущее приложение в сторону, добавив к имени
.old-update; - копирует новый бандл на его место, снимает карантин и запускает новую версию;
- если запустить не удалось — возвращает прежний бандл на место.
Прежняя копия остаётся рядом до первого удачного запуска новой версии, потом её убирает уже новая версия. Значит, откат простой: если что-то не работает, верните прежнему бандлу обычное имя.
Автоустановка на Windows
На Windows приложение ничего не подменяет: установку делает родной установщик, а приложение только запускает его — и обязательно после собственного выхода. Иначе установщик сам закрывает работающее приложение и не спрашивает разрешения.
Установка идёт для текущего пользователя, страница выбора папки при обновлении пропускается, ярлыки не пересоздаются, а прогресс виден в окне установщика. После установки новая версия открывается сама; если не открылась, её запустит скрипт установки. Прогресс в карточке настроек идёт без процента: файлы ставит уже не приложение, и точное число показать нечем.
Одна оговорка честности ради: сборка для Windows и автоустановка в ней проверены по составу и тестами, но живьём на реальной Windows их ещё не проходили. Если что-то поведёт себя не так, как здесь описано, — это как раз тот случай, о котором стоит написать в поддержку.
Контрольная сумма
В манифесте рядом с дистрибутивами у каждого файла указана контрольная сумма sha256 — отпечаток содержимого. При скачивании из приложения сумма сверяется сама, и файл с другой суммой не установится: значит, он не докачался или подменён по дороге.
Вручную ту же проверку можно сделать и для файла из раздела «Скачать»: на Mac — командой shasum -a 256, на Windows — certutil -hashfile … SHA256. Совпало с манифестом — файл дошёл целиком.
Если автоустановка не сработала
Автоустановка доступна не всегда: в браузере, при запуске из папки с исходниками и при запуске приложения прямо из образа кнопка называется иначе — «Скачать обновление». Она просто тянет файл с прогрессом в папку data/updates/ рядом с данными приложения, а не внутрь бандла, и рядом появляется кнопка «Показать папку». Отдельной кнопки «Открыть установщик» нет — скачанный файл открывают из Finder или проводника.
Дальше вручную:
- Mac. Откройте скачанный образ, перетащите приложение в «Программы» и подтвердите замену. Первый запуск — как при установке.
- Windows. Запустите скачанный установщик и поставьте новую версию поверх прежней.
Данные при этом не теряются: настройки, ключи, копии и книги лежат вне папки с программой, поэтому подмена бандла их не задевает — см. «Где что лежит». Если обновление не встало, стоит посмотреть журнал установки в data/updates/: там записано, что делал скрипт.
На этой странице
Напишите в поддержку — приложите скриншот и пару слов о том, что делали. Или скопируйте ссылку на эту страницу и отправьте её коллеге.