Summary / Описание задачи
В соответствии с Фазой 3 Технического Задания (Obsidian 06 — Планирование/Система автообновления десктопа.md), необходимо реализовать нативные адаптеры (Platform Sinks) для автоматической установки скачанного обновления в целевых операционных системах при нажатии кнопки Restart & Update Now.
Спецификация по платформам:
- Linux (
AppImage):
- Проверка запуска из AppImage (переменная
APPIMAGE / путь /proc/self/exe).
- Сохранение нового файла
.AppImage рядом с текущим (или во временной папке), проверка SHA256 и установка chmod +x.
- Замена текущего бинарника через атомарное переименование (
rename) или запуск вспомогательного скрипта с последующим вызовом execv / Process.start и завершением старого процесса.
- Если приложение установлено через системный менеджер пакетов (
apt, snap, flatpak), отображение подсказки с командой обновления в терминале.
- Windows (
.exe / InnoSetup):
- Скачивание инсталлятора
Querya-Setup.exe в %TEMP%.
- Запуск процесса установки с флагами тихой установки:
Process.run('Querya-Setup.exe', ['/SILENT', '/NORESTART', '/CLOSEAPPLICATIONS']).
- Завершение текущего Dart/Flutter-процесса (
exit(0)), чтобы установщик мог перезаписать querya.exe и запустить новую версию.
- macOS (
Sparkle / DMG helper):
- Подключение проверенного фреймворка
Sparkle через плагин auto_updater или реализация скачивания архива .app с проверкой подписи (Gatekeeper / codesign -v) и заменой в /Applications.
Scope & Component
- Scope:
desktop
- Component:
Core / Platform Installers
- Kind:
enhancement
- Severity:
high
- Detected in version:
dev / 0.5.0
Местоположение в коде (Планируемое)
- Файлы:
lib/core/updater/installers/linux_appimage_installer.dart
lib/core/updater/installers/windows_exe_installer.dart
lib/core/updater/installers/macos_sparkle_installer.dart
Acceptance Criteria / Критерии приемки
Summary / Описание задачи
В соответствии с Фазой 3 Технического Задания (Obsidian
06 — Планирование/Система автообновления десктопа.md), необходимо реализовать нативные адаптеры (Platform Sinks) для автоматической установки скачанного обновления в целевых операционных системах при нажатии кнопкиRestart & Update Now.Спецификация по платформам:
AppImage):APPIMAGE/ путь/proc/self/exe)..AppImageрядом с текущим (или во временной папке), проверкаSHA256и установкаchmod +x.rename) или запуск вспомогательного скрипта с последующим вызовомexecv/Process.startи завершением старого процесса.apt,snap,flatpak), отображение подсказки с командой обновления в терминале..exe/InnoSetup):Querya-Setup.exeв%TEMP%.Process.run('Querya-Setup.exe', ['/SILENT', '/NORESTART', '/CLOSEAPPLICATIONS']).exit(0)), чтобы установщик мог перезаписатьquerya.exeи запустить новую версию.Sparkle/ DMG helper):Sparkleчерез плагинauto_updaterили реализация скачивания архива.appс проверкой подписи (Gatekeeper/codesign -v) и заменой в/Applications.Scope & Component
desktopCore / Platform Installersenhancementhighdev / 0.5.0Местоположение в коде (Планируемое)
lib/core/updater/installers/linux_appimage_installer.dartlib/core/updater/installers/windows_exe_installer.dartlib/core/updater/installers/macos_sparkle_installer.dartAcceptance Criteria / Критерии приемки
in-place) без потери настроек и перезапускается.Gatekeeper), обновление корректно заменяет.appбанндл.