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