Files
umbrix/update-server/CHANGELOG_DESKTOP.md
Umbrix Developer 76a374950f feat: mobile-like window size and always-visible stats
- Changed window size to mobile phone format (400x800)
- Removed width condition for ActiveProxyFooter - now always visible
- Added run-umbrix.sh launch script with icon copying
- Stats cards now display on all screen sizes
2026-01-17 13:09:20 +03:00

228 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# История изменений системы обновлений
## Версия 1.1 - Упрощение и Desktop-фокус
**Дата:** 2024
### 🎯 Главное изменение
Система обновлений переориентирована **только на Desktop платформы** (Windows, macOS, Linux).
Android версия использует Google Play Store для автоматических обновлений.
---
### ✨ Что изменилось
#### Код приложения
1. **new_version_dialog.dart** - Упрощён:
- ✅ Android: Открывает браузер/Google Play
- ✅ Desktop: Скачивание с прогресс-баром + автозапуск установщика
- ❌ Удалены: Android permissions, MethodChannel, InstallHandler
2. **about_page.dart**:
- Кнопка "Проверить обновления" видна **только на Desktop**
- Android не показывает кнопку (обновления через Google Play)
3. **Android код удалён**:
-`InstallHandler.kt` - удалён
-`REQUEST_INSTALL_PACKAGES` permission - удалён из манифеста
- ❌ Регистрация InstallHandler в MainActivity - удалена
#### Документация
1. **README.md** - Обновлён:
- Добавлено предупреждение о Desktop-only
- Изменена диаграмма процесса обновления
- Добавлены ссылки на Google Play для Android
2. **README_DESKTOP.md** - Создан:
- Подробная инструкция для Desktop платформ
- Структура файлов (.exe, .dmg, .AppImage)
- Примеры конфигурации
3. **api.php** - Обновлён комментарий:
- Указано, что API только для Desktop
- Упомянуто использование Google Play для Android
---
### 🧹 Что почистили
#### Удалённые файлы
- `android/app/src/main/kotlin/com/umbrix/app/InstallHandler.kt`
#### Удалённые permissions
- `android.permission.REQUEST_INSTALL_PACKAGES` из AndroidManifest.xml
#### Удалённый код
- MethodChannel для проверки Android permissions
- Функции `checkInstallPermission()`, `requestInstallPermission()`
- Сложная логика установки APK из приложения
---
### 📦 Зависимости
Используемые пакеты **только для Desktop**:
- `dio` ^5.4.1 - HTTP запросы и загрузка файлов
- `path_provider` ^2.1.1 - Временная директория для загрузок
- `open_file` ^3.3.2 - Открытие установщика после загрузки
Android теперь использует только:
- `UriUtils.tryLaunch()` - Открытие браузера/Google Play
---
### 🔄 Логика работы
#### Desktop (Windows/macOS/Linux)
```dart
if (Platform.isWindows || Platform.isMacOS || Platform.isLinux) {
// 1. Проверка обновлений на сервере
// 2. Показ диалога с информацией о версии
// 3. Скачивание с прогресс-баром (dio)
// 4. Сохранение в temp директорию
// 5. Автоматический запуск установщика (open_file)
}
```
#### Android
```dart
if (Platform.isAndroid) {
// 1. Проверка обновлений НЕ показывается (кнопка скрыта)
// 2. В production: прямая ссылка на Google Play
// 3. В debug: открытие браузера с download_url
}
```
---
### 🚀 Дальнейшие планы
#### Production деплой
1. **Windows**:
- Создание `.exe` установщика
- Подпись сертификатом
- Загрузка в `downloads/windows/`
2. **macOS**:
- Создание `.dmg` образа
- Нотаризация Apple
- Загрузка в `downloads/macos/`
3. **Linux**:
- Создание `.AppImage`
- Добавление `.deb` / `.rpm` пакетов
- Загрузка в `downloads/linux/`
4. **Android**:
- Публикация в Google Play Store
- Удаление кастомного сервера обновлений
- Автоматические обновления через магазин
---
### 💡 Почему так?
**Проблема:** Android требует сложные разрешения для установки APK из приложения:
- Нужен `REQUEST_INSTALL_PACKAGES` permission
- Пользователь должен вручную дать разрешение в настройках
- Это запутывает пользователей и выглядит нелогично
**Решение:**
- Android → Google Play Store (стандартный путь)
- Desktop → Собственный сервер обновлений (гибкость и контроль)
---
### 📝 Заметки разработчика
> "как то нелогично . но мы же его установили уже ... на андроид может и не надо такое обновление на exe надо будет"
Было принято решение упростить систему:
- На Android слишком сложно и нелогично обновлять APK изнутри приложения
- Google Play Store делает это автоматически и безопасно
- Desktop платформам нужна эта функция, так как нет централизованного магазина
- Разделение платформ упрощает код и улучшает UX
---
## Версия 1.0 - Первый релиз
**Дата:** 2024
- ✅ PHP API для проверки обновлений
- ✅ Web-панель администратора
- ✅ История версий
- ✅ Поддержка beta/stable релизов
- ✅ CORS настройки
- ✅ Rate limiting
- ✅ Логирование запросов
- ✅ Интеграция с Flutter приложением
**Проблемы версии 1.0:**
- Пыталась поддерживать Android с установкой APK
- Требовала сложные Android permissions
- Запутанная UX для пользователей Android
---
## Миграция с 1.0 на 1.1
### Для разработчиков
1. Обновите код приложения (Flutter):
```bash
git pull
flutter pub get
flutter build apk --debug # для тестирования
```
2. Удалите старый APK с устройства:
```bash
adb uninstall com.umbrix.app
```
3. Установите новую версию:
```bash
adb install build/app/outputs/flutter-apk/app-debug.apk
```
### Для сервера
Ничего менять не нужно! API осталось совместимым.
Просто обновите документацию:
- `README.md` ← основной файл
- `README_DESKTOP.md` ← подробности для Desktop
### Для пользователей
**Android:**
- Обновления теперь через Google Play Store
- Кнопка "Проверить обновления" больше не показывается
**Desktop:**
- Всё работает как раньше, но с улучшенным UX
- Прогресс-бар при скачивании
- Автоматический запуск установщика
---
## Контрольный список релиза
- [x] Упростить код для Android
- [x] Реализовать скачивание для Desktop с прогресс-баром
- [x] Удалить InstallHandler.kt
- [x] Удалить REQUEST_INSTALL_PACKAGES permission
- [x] Обновить README.md
- [x] Создать README_DESKTOP.md
- [x] Обновить комментарии в api.php
- [x] Протестировать на Android emulator
- [ ] Создать Windows .exe установщик
- [ ] Создать macOS .dmg образ
- [ ] Создать Linux .AppImage
- [ ] Опубликовать в Google Play Store
- [ ] Production деплой сервера