Обновления приложения и агента
Оба Windows-приложения поддерживают автоматические обновления с описанием изменений. Каналы обновлений независимы: desktop для приложения и agent для агента.
Что видит пользователь
- При запуске и каждые 6 часов приложение проверяет новую версию.
- Если версия новее, появляется баннер «Доступна версия X».
- В окне обновления видны номер версии, размер, SHA-256, дата и полное описание изменений.
- Кнопка «Обновить сейчас» скачивает файл, проверяет контрольную сумму и перезапускает приложение.
- Обязательные обновления нельзя отложить.

Как публикуется обновление
- Войдите в админ-панель.
- Откройте раздел «Обновления Windows».
- Выберите канал:
agentилиdesktop. - Укажите версию в формате
2.0.1. - Заполните заголовок и описание изменений.
- Загрузите
.exe/.msi(до 300 МБ) или укажите внешнюю ссылку. - Отметьте «Опубликовать» (и при необходимости «Обязательное обновление»).
- Сохраните.
После публикации приложения получат обновление при следующей проверке. Счётчик скачиваний виден в таблице релизов.
Эндпоинт проверки
textGET https://openspeedtest.ru/api_updates.php?action=check&channel=agent&version=2.0.0&platform=windows
Ответ содержит needs_update, latest и массив releases с описаниями всех версий новее установленной.
Безопасность
- Отдаются только опубликованные релизы.
- Файлы хранятся в
uploads/releases, исполнение PHP в этой папке запрещено. - Скачивание проверяется по SHA-256.
- Установщик запускается без прав администратора.
- Админка требует CSRF-токен и роль
superadmin/admin/manager.
Если обновление не приходит
- Проверьте интернет и доступность
openspeedtest.ru. - Нажмите «Проверить обновления» вручную.
- Убедитесь, что версия в админке действительно опубликована и выше установленной.
- Проверьте, что канал совпадает:
agentдля агента,desktopдля приложения. - Посмотрите
%LOCALAPPDATA%\OpenSpeedTestAgent\config.jsonили%LOCALAPPDATA%\OpenSpeedTest\config.json— там кэшируется последняя проверка.
Откат
Администратор может снять релиз с публикации. Приложения перестанут предлагать его при следующей проверке; уже установленная версия продолжит работать.