zapret-kvn/xray_fluent/updates/installer/__init__.py
loop-uh 8199f8b931 Автообновление: установщик переписан с нуля, появилось окно обновления
Прежний PowerShell-скрипт переименовывал каталоги приложения целиком и
падал, если внутри был открыт хотя бы один файл (антивирус, драйвер
WinDivert, не завершившееся ядро): «The process cannot access the file
because it is being used by another process».

Теперь обновление ставит сам ZapretKVN.exe новой версии, запущенный из
распакованного архива с флагом --apply-update:

- файлы сравниваются с установленными, неизменившиеся не трогаются;
- изменённые заранее копируются рядом с приложением, сама замена — это
  пофайловые переименования с журналом и откатом в обратном порядке;
- при сбое в журнал попадает имя файла и программа, которая его держит;
- приложение закрывается только после того, как установщик подтвердил
  запуск, поэтому не остаётся закрытым, если установщик не поднялся;
- всё время установки на экране окно с ходом работы и фразами.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 22:14:35 +03:00

16 lines
1.1 KiB
Python
Raw Permalink 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.

"""Установка обновления приложения.
Обновление ставит сам ``ZapretKVN.exe`` новой версии: распакованная сборка
запускается из временного каталога с флагом ``--apply-update`` и заменяет
файлы установленной копии, пока та закрыта.
* ``plan`` — что и куда ставить (передаётся установщику JSON-файлом);
* ``file_swap`` — замена файлов с журналом и откатом;
* ``processes`` — ожидание и остановка процессов Windows;
* ``runner`` — порядок шагов установки без какого-либо интерфейса;
* ``window`` и ``phrases`` — окно, которое видит пользователь;
* ``entry`` — точка входа режима ``--apply-update``;
* ``launch`` — запуск установщика из работающего приложения.
"""
APPLY_UPDATE_FLAG = "--apply-update"