Обновление сборок — функция редакции Watchdog Про. Без действующего ключа вкладка «Обновления» в главном окне и группа «Удалённое обновление билдов (Яндекс.Диск)» в настройках заблокированы. Как получить ключ — в руководстве пользователя.
Новую версию приложения не обязательно возить на стенд на флешке. Издатель сборки — тот, кто выпускает новые версии приложения, — кладёт в публичную папку Яндекс.Диска два файла: архив сборки и небольшой указатель manifest.json. Стенды с Uniday Watchdog забирают их сами, проверяют контрольную сумму и подменяют работающее приложение. Если новая версия окажется плохой, стенд сам вернётся на предыдущую рабочую.
Что нужно: аккаунт Яндекса (хватит бесплатного) и одна опубликованная папка. Чего не нужно: своего сервера, базы данных, открытых портов, белого IP, VPN и доменного имени. Стенд читает публичную папку анонимно — ни логина, ни токена в его настройках нет.
Как установить Uniday Watchdog и включить его функции, описано в инструкции по установке, а работа с вкладкой «Обновления» — в руководстве пользователя. Здесь — всё, что делает издатель.
museum-builds. Через сайт или приложение Яндекс.Диска, неважно.https://disk.yandex.ru/d/AbC123XyZ. Эта ссылка целиком и вставляется в настройки Watchdog на стенде.Аккаунт нужен только вам: заливка и публикация — это запись. Стендам учётная запись не нужна.
Раскладка внутри папки плоская, без подпапок. Стенды на Windows читают manifest.json, стенды на Linux — manifest-linux-x64.json, поэтому одна папка может обслуживать обе системы:
museum-builds/ ← её ссылка вставляется в Watchdog
manifest.json ← для стендов на Windows
Chess-1.4.3.zip
manifest-linux-x64.json ← для стендов на Linux, если они есть
Chess-1.4.3-linux.zip
Если приложений несколько, каждому нужна своя публичная папка: манифест читается всегда из корня папки.
Заархивируйте папку сборки. Годятся оба варианта — Watchdog сам выровняет структуру при распаковке:
# с обёрткой (корень zip = папка сборки) — обычное «Отправить → Сжатая папка»
Compress-Archive -Path .\Chess-1.4.3 -DestinationPath .\Chess-1.4.3.zip
# или плоско (в корне zip сразу exe и папка _Data)
Compress-Archive -Path .\Chess-1.4.3\* -DestinationPath .\Chess-1.4.3.zip
Сборку для Linux упакуйте так же, в zip: например, zip -r Chess-1.4.3-linux.zip Chess-1.4.3.
Правила:
__MACOSX/, .DS_Store, Thumbs.db игнорируется — это важно, если архив собирали на macOS;Chess.exe, а не Chess-1.4.3/Chess.exe;.exe, например Chess.x86_64 у Unity. Права на запуск Watchdog выставит сам после распаковки, поэтому архив можно собирать и на Windows.Если по указанному пути исполняемого файла в архиве нет, это ошибка структуры: обновление не применяется, а версия уходит в карантин. Повторное скачивание тут не поможет — нужно исправить архив или манифест.
Манифест — указатель на актуальную версию. Файл небольшой:
{
"version": "1.4.3",
"name": "Chess",
"path": "Chess-1.4.3.zip",
"sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"sizeBytes": 734003200,
"exeRelativePath": "Chess.exe",
"rolloutAfter": ""
}
Поля манифеста:
| Поле | Обязательное | Что это |
|---|---|---|
version | да | Версия сборки. Уникальна для каждого релиза — именно по ней различаются версии |
name | нет | Имя продукта, идёт в имя папки на диске стенда. Пусто — выведется из имени исполняемого файла |
path | да | Имя zip рядом с манифестом, не ссылка |
sha256 | да | Контрольная сумма архива: 64 шестнадцатеричных символа в нижнем регистре. Сверяется до любого действия с приложением |
sizeBytes | да | Размер архива в байтах |
exeRelativePath | да | Путь к исполняемому файлу от корня сборки, без обёрточной папки. В manifest-linux-x64.json — без .exe |
rolloutAfter | нет | Момент в формате 2026-07-01T03:00:00Z (UTC): применять не раньше. Пусто — сразу |
Uniday Watchdog манифест не создаёт: его готовит издатель своими средствами. Проще всего — небольшим скриптом рядом с архивом. Для сборки под Windows, в PowerShell:
$zip = '.\Chess-1.4.3.zip'
[ordered]@{
version = '1.4.3'
name = 'Chess'
path = (Split-Path $zip -Leaf)
sha256 = (Get-FileHash $zip -Algorithm SHA256).Hash.ToLower()
sizeBytes = (Get-Item $zip).Length
exeRelativePath = 'Chess.exe'
rolloutAfter = ''
} | ConvertTo-Json | Set-Content -Encoding utf8 .\manifest.json
Для сборки под Linux, в терминале Linux:
ZIP=Chess-1.4.3-linux.zip
cat > manifest-linux-x64.json <<EOF
{
"version": "1.4.3",
"name": "Chess",
"path": "$ZIP",
"sha256": "$(sha256sum "$ZIP" | cut -d' ' -f1)",
"sizeBytes": $(stat -c %s "$ZIP"),
"exeRelativePath": "Chess.x86_64",
"rolloutAfter": ""
}
EOF
Те же шаги можно встроить в свой конвейер сборки — например, в скрипт, который запускается после сборки проекта Unity и архивации. Готового модуля для Unity или других движков в составе Uniday Watchdog нет: конвейер сборки — на стороне издателя.
Манифест проверяется до скачивания: контрольная сумма должна быть ровно 64 символа, размер — больше нуля, путь к исполняемому файлу — непустой и без ... Ошибочный манифест не приводит к скачиванию: в журнал уходит «манифест невалиден: <причина>» не чаще раза в час, а остальная работа продолжается. Так одна опечатка не заставит стенды качать многогигабайтный архив каждые 15 минут.
ПОРЯДОК ЗАЛИВКИ: 1) zip 2) manifest.json — ПОСЛЕДНИМ
Манифест, который указывает на ещё не залитый архив, — это ошибка скачивания на каждом стенде до конца заливки. Старые архивы можно удалять, когда все стенды обновились.
Нужен действующий ключ Watchdog Про. На стенде:
Качать сборки Watchdog начнёт, только если включены оба флажка: общий «Включить автообновление билдов» и «Обновления включены» у этого приложения.
Если стенд настраивается с нуля, проще пройти мастер первичной настройки: источник «Скачать с Яндекс.Диска» → вставить ссылку в поле «Ссылка на папку Яндекс.Диска» → «Проверить» → «Начать». Мастер сам скачает архив, сверит контрольную сумму, распакует сборку и настроит наблюдение за ней. Флажок «Автоматически обновлять с этой папки» в мастере включён по умолчанию. Если его снять, установка будет разовой, но ссылка сохранится — включить обновления позже можно в настройках, не вводя её заново.
На вкладке «Обновления» главного окна строка новой версии пройдёт путь:
«В облаке» → «Качается 42%» → «Подтверждается 1/3 … 3/3» → «Активная» с меткой «текущая».


В журнале — на вкладке «Логи watchdog» и в файле журнала в папке logs:
В папке для билдов на стенде появится папка версии, например Chess-1.4.3-9f86d0, а во время закачки — временная папка .staging.
version — она обязана быть новой и уникальной.version, path, sha256, sizeBytes и перезапишите манифест последним.Следующая проверка на стендах установит версию сама. Предыдущая останется на диске со статусом «На диске» — для отката, пока её не вытеснит лимит «Хранить версий».
Если перезалить архив под той же версией с другим содержимым, стенд обновление не применит, а в диагностический журнал запишет предупреждение: версия опубликована повторно с другой контрольной суммой — поднимите версию. Версии сравниваются только на равенство: понятий «новее» и «старее» для сборок у Watchdog нет.
Один стенд откатывают из интерфейса: вкладка «Обновления» → правый клик по нужной версии → «Откатиться на эту» в автоматическом режиме (отвергнутая версия уйдёт в карантин) или «Перейти на эту версию» в ручном (без карантина).
Все стенды сразу — верните в манифест предыдущую версию: version, path, sha256 и sizeBytes от старого архива, сам архив должен лежать в папке. Версии сравниваются на равенство, поэтому стенды увидят «версия не совпадает с текущей» и перейдут на старую. Если она ещё лежит у них на диске, установка пройдёт без повторной закачки.
Оговорка: версия, которая раньше не прошла апробацию, лежит в карантине по контрольной сумме — её сначала придётся вручную снять с карантина.
Новая версия сразу становится текущей, но считается непроверенной, пока не отработает 3 проверки подряд без проблем: процесс жив, окно отвечает, признаков зависания нет.
| Параметр | По умолчанию |
|---|---|
| Успешных проверок для подтверждения («Тиков апробации») | 3 |
| Интервал между проверками | равен интервалу опроса мониторинга, по умолчанию 10 секунд |
| Итого испытательный срок | около 30 секунд |
| Предельный срок апробации | 30 минут |
Апробацию проваливают сбой, перезапуск, зависание и срабатывание защиты от петли рестартов в это время. Преднамеренная остановка — ручная остановка или плановый перезапуск — её не проваливает: счёт проверок встаёт на паузу и продолжается после запуска. Так апробация не провалится из-за того, что стенд выключили на ночь.
Апробация не останавливает остальное: манифест по-прежнему проверяется, и более новая версия, вышедшая тем временем, скачивается на диск — её установка просто ждёт исхода.
Если ключ Watchdog Про перестал действовать во время установки, начатые замена, апробация и откат доводятся до конца, чтобы приложение не осталось между версиями. Новых проверок и закачек после этого нет.
Цель отката — последняя версия, которая работала. Её папка уже на диске, поэтому откат мгновенный и не требует сети. В журнале: «Откат с 1.4.5 на 1.4.4: апробация не пройдена».
Откат спасает от плохой сборки, а не от сломанного компьютера: если и предыдущая версия не запускается, работает обычный сценарий — пауза и сигнал человеку.
Карантин блокирует содержимое: его ключ — контрольная сумма, а не номер версии.
Стенд не застревает: он пропускает плохую версию и спокойно установит следующую.
Особо важный экспонат можно перевести в ручной режим: переключатель «Режим: Авто | Ручное» в шапке вкладки «Обновления».
| Карантин | Ручной режим | |
|---|---|---|
| На что действует | одна версия | всё приложение |
| Закачка | заблокирована | работает |
| Установка | заблокирована | только вручную |
| Возврат в норму | автоматически при новой версии | только действием оператора |
В ручном режиме новые версии всё равно скачиваются на диск и ждут команды «Перейти на эту версию». Наблюдение при этом не меняется: если закреплённая сборка упала, Watchdog перезапустит её как обычно. Ручной режим сохраняется после перезапуска Watchdog и отключения питания. При возврате в «Авто» стенд сверится с манифестом и перейдёт на ту версию, которая в нём сейчас; карантины при этом не сбрасываются.
Переключать режим безопасно в любой момент: во время закачки архив докачается и останется на диске, во время апробации она доиграет до конца. Блокируются только будущие установки.
Чтобы стенд не перезапускался при посетителях, установку можно ограничить по времени. Для этого есть два независимых способа:
03:00 и 06:00;rolloutAfter в манифесте — «не раньше такого-то момента», задаётся издателем для конкретного релиза.Окно ограничивает только установку. Архив всё равно скачивается и ложится на диск, а устанавливается на первой проверке после открытия окна — без повторной закачки.
Закачка и установка — независимые половины. Новая версия ложится на диск всегда: в ручном режиме, на паузе мониторинга, при закрытом окне установки и даже пока другая версия проходит апробацию. Ждать может только установка, и вот когда:
Если процесс не запущен, а мониторинг на паузе (обычный ночной случай), версия устанавливается сразу, но свою паузу Watchdog не снимает: новая сборка запустится утром кнопкой ▶.
Указатель текущей версии переключается последним одной операцией. Поэтому при отключении питания на диске всегда либо старая версия, либо новая — «половины» не бывает.
Правый клик по строке или кнопка «⋮» в конце строки:
| Действие | Для какого статуса | Что делает |
|---|---|---|
| Откатиться на эту | «На диске», в автоматическом режиме | Переключает на эту версию; отвергнутая версия уходит в карантин. Всегда спрашивает подтверждение |
| Перейти на эту версию | «На диске», в ручном режиме | Обычный переход: без карантина и без апробации, ручной режим закрепляется за новой версией |
| Считать рабочей | «Подтверждается» | Засчитать апробацию вручную — например, если стенд держали выключенным |
| Скачать сейчас | «В облаке» | Обойти окно установки; в ручном режиме — скачать без установки |
| В карантин | «Активная», «В облаке» | Пометить версию плохой вручную |
| Снять карантин | «В карантине» | Разрешить новую попытку |
| Удалить с диска | любая неактивная | Освободить место. Всегда спрашивает подтверждение |
| Открыть папку | любая версия на диске | Открывает папку сборки |
Тексты подтверждений: «Откатиться на версию X? Текущая версия уйдёт в карантин, экспонат перезапустится.» · «Перейти на версию X? Текущая версия останется на диске (без карантина), экспонат перезапустится.» · «Удалить версию X с диска? Откатиться на неё будет нельзя.»
«Перейти на эту версию» спрашивает подтверждение, только когда есть что перезапускать: если приложение не запущено, версия переключается сразу. Исключение — мониторинг на паузе, а процесс работает: тогда подтверждение спрашивается всегда.
| Статус | Что значит |
|---|---|
| В облаке | Манифест указывает на эту версию, её ещё не скачивали |
| Качается 42% | Идёт загрузка |
| Подтверждается 2/3 | Установлена как текущая, проходит апробацию |
| Активная | Текущая рабочая версия — её запускает и наблюдает Watchdog |
| На диске | Скачана и лежит на диске: для мгновенного отката или ручного перехода |
| В карантине | Не прошла апробацию, эта сборка заблокирована |
Строка активной версии выделена подложкой, полоской слева и меткой «текущая». В шапке таблицы справа — дата последней проверки и кнопка, которая запускает проверку немедленно.
Общее для всех приложений — Настройки → вкладка «Обновления» → группа «Удалённое обновление билдов (Яндекс.Диск)»:
| Настройка | По умолчанию | Диапазон |
|---|---|---|
| «Включить автообновление билдов» | выключено | — |
| «Опрос, мин» | 15 | 1…1440 |
| «Тиков апробации» | 3 | 1…60 |
| «Хранить версий» | 2 (текущая и одна для отката) | 1…20 |
| «Применять обновления только в окне» | выключено | поля 03:00–06:00 |
Своё у каждого приложения — Настройки → вкладка «Приложения» → блок «Обновления билдов»: публичная ссылка на папку, папка для билдов (по умолчанию ./builds/<id> внутри папки Watchdog), флажок «Обновления включены». Свои у приложения и история версий, апробация, карантины: обновление одного экспоната не затрагивает соседний.
На диске хранится столько рабочих версий, сколько задано в «Хранить версий». Версия, не прошедшая апробацию, удаляется сразу, а текущая рабочая при чистке всегда защищена.
| Симптом | Причина | Что делать |
|---|---|---|
| «Скачивание обновления X не удалось (повтор позже): контрольная сумма не совпала» | Архив перезалили, а sha256 и sizeBytes в манифесте не обновили | Пересчитать сумму и размер, перезаписать манифест. После трёх неудач подряд с одной суммой закачка уходит в часовую паузу |
| «Файл билда … не найден на Я.Диске (манифест ссылается на отсутствующий zip)» | Манифест залит раньше архива или архив перезалит под другим именем | Соблюдать порядок: сначала zip, манифест последним. Проверить поле path |
| «структура архива: …», версия в карантине | Путь к исполняемому файлу в манифесте не совпадает с тем, что лежит в архиве | Указать имя файла от корня сборки, без обёрточной папки. Исправить манифест и поднять версию |
| «манифест невалиден: …» | Ошибка в манифесте | Пересоздать манифест скриптом из шага 3 |
| «В папке есть только сборка для Windows — нет manifest-linux-x64.json» | Стенд на Linux, а в папке только манифест для Windows | Выложить сборку для Linux и manifest-linux-x64.json |
| «exeRelativePath «Chess.exe» — программа Windows; в manifest-linux-x64.json нужен исполняемый файл Linux без .exe …» | В манифест для Linux попал путь к файлу Windows | Указать исполняемый файл Linux-сборки, например Chess.x86_64 |
| Ничего не скачивается | Папка не опубликована; вставлена не та ссылка; выключен один из двух флажков; в манифесте та же версия, что уже стоит | Проверить по очереди |
| Вкладка «Обновления» затемнена, на ней значок «ПРО» | На стенде нет действующего ключа Watchdog Про | Активировать ключ — руководство пользователя, п. 10.4 |
| Апробация не проходит на заведомо рабочей сборке | Приложению нужно проработать около 30 секунд и отвечать, то есть иметь окно. Консольная программа без окна может считаться «не отвечает» | Проверить, что сборка открывает окно |
| «недостаточно места: нужно ~1400 МБ, свободно 900 МБ» | Нужно не меньше двух размеров архива: сам zip и распакованная копия | Освободить место или вынести папку для билдов на другой диск |
| SmartScreen или антивирус задерживает скачанный exe | Обычное поведение Windows | Добавить папку для билдов в исключения антивируса |
Со стороны издателя от обновлений нужно немного: поднимать версию на каждый релиз и класть рядом с архивом правильный манифест.
.exe;manifest.json для Windows, manifest-linux-x64.json для Linux;Ограничения, о которых лучше знать заранее:
Сам Watchdog обновляется не из вашей папки, а из папки релизов Uniday, и настраивать для этого ничего не нужно. Самообновление есть в обеих редакциях. Как оно работает, как его отключить и как вернуть предыдущую версию — в руководстве пользователя, п. 9.2 и в инструкции по установке, раздел 8. Установка пакетом на Linux сама себя не обновляет — подробности на странице «Установка на Linux».
КОНТАКТЫ
ООО «Юнидэй»
г. Саратов, ул. Бахметьевская 44/64, оф. 72
ИНН: 6454142737
КПП: 645401001
ОКВЭД: 62.01 Разработка компьютерного программного обеспечения.
Код вида деятельности: 22.01
© UNIDAY, 2014-2025
ООО «Юнидэй»
г. Саратов, ул. Бахметьевская 44/64, оф. 72
ИНН: 6454142737
КПП: 645401001
ОКВЭД: 62.01 Разработка компьютерного программного обеспечения.
Код вида деятельности: 22.01
Сайт использует cookie и Яндекс Метрику для статистики посещений.
Нажимая «Принять», вы даёте согласие на обработку персональных данных
КОНТАКТЫ
ООО «Юнидэй»
г. Саратов, ул. Бахметьевская 44/64, оф. 72
ИНН: 6454142737
КПП: 645401001
ОКВЭД: 62.01 Разработка компьютерного программного обеспечения.
Код вида деятельности: 22.01
© UNIDAY, 2014-2025
ООО «Юнидэй»
г. Саратов, ул. Бахметьевская 44/64, оф. 72
ИНН: 6454142737
КПП: 645401001
ОКВЭД: 62.01 Разработка компьютерного программного обеспечения.
Код вида деятельности: 22.01
Сайт использует cookie и Яндекс Метрику для статистики посещений.
Нажимая «Принять», вы даёте согласие на обработку персональных данных
КОНТАКТЫ
ООО «Юнидэй»
г. Саратов, ул. Бахметьевская 44/64, оф. 72
ИНН: 6454142737
КПП: 645401001
ОКВЭД: 62.01 Разработка компьютерного программного обеспечения.
Код вида деятельности: 22.01
© UNIDAY, 2014-2025
ООО «Юнидэй»
г. Саратов, ул. Бахметьевская 44/64, оф. 72
ИНН: 6454142737
КПП: 645401001
ОКВЭД: 62.01 Разработка компьютерного программного обеспечения.
Код вида деятельности: 22.01
Сайт использует cookie и Яндекс Метрику для статистики посещений.
Нажимая «Принять», вы даёте согласие на обработку персональных данных