Skip to content

enhancement(core): implement platform-specific in-place installers for Linux AppImage, Windows, and macOS #282

Description

@ZhuchkaTriplesix

Summary / Описание задачи

В соответствии с Фазой 3 Технического Задания (Obsidian 06 — Планирование/Система автообновления десктопа.md), необходимо реализовать нативные адаптеры (Platform Sinks) для автоматической установки скачанного обновления в целевых операционных системах при нажатии кнопки Restart & Update Now.

Спецификация по платформам:

  1. Linux (AppImage):
    • Проверка запуска из AppImage (переменная APPIMAGE / путь /proc/self/exe).
    • Сохранение нового файла .AppImage рядом с текущим (или во временной папке), проверка SHA256 и установка chmod +x.
    • Замена текущего бинарника через атомарное переименование (rename) или запуск вспомогательного скрипта с последующим вызовом execv / Process.start и завершением старого процесса.
    • Если приложение установлено через системный менеджер пакетов (apt, snap, flatpak), отображение подсказки с командой обновления в терминале.
  2. Windows (.exe / InnoSetup):
    • Скачивание инсталлятора Querya-Setup.exe в %TEMP%.
    • Запуск процесса установки с флагами тихой установки: Process.run('Querya-Setup.exe', ['/SILENT', '/NORESTART', '/CLOSEAPPLICATIONS']).
    • Завершение текущего Dart/Flutter-процесса (exit(0)), чтобы установщик мог перезаписать querya.exe и запустить новую версию.
  3. 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 / Критерии приемки

  • На Linux (AppImage) приложение успешно обновляет само себя на месте (in-place) без потери настроек и перезапускается.
  • На Windows скачанный инсталлятор запускается в фоне, закрывает приложение, обновляет файлы и перезапускает клиента.
  • На macOS соблюдены требования проверки цифровой подписи (Gatekeeper), обновление корректно заменяет .app банндл.

Metadata

Metadata

Labels

coreCore library logic and servicesenhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions