Программа СОНО очень своеобразная программа. В целом, на сегодняшний день, она очень неплохо справляется со своей работой. Но есть один очень неприятный момент — она ну ОЧЕНЬ ДОЛГО ОБНОВЛЯЕТСЯ. Причем если немного последить за процессом её обновления, то становится ясно, что практически 90-95% этого времени уходит на процесс создания резервной копии базы, которая создается в папке «backup» внутри основной папки установки «SONO». Создание резервной копии может занимать от 20 минут до 2 часов в зависимости от размера базы данных и от мощность персонального компьютера. В то время как сам процесс обновления обычно занимает не более 5 минут.

Сам процесс обновления, кстати, судя по записям программы, происходит так же во временном каталоге, что на самом деле «живую» базу не затрагивает, т.е. если что то идёт не так, то выполняется остановка обновления и программа просто возвращается к своему состоянию до начала обновления, т.е. процесс обновления на самом деле не «ломает» программу.

Если же что то идет не так, т.е. в процессе обновления происходит какая то ошибка, то обычно решить её все равно не удаётся и приходится старую папку с программой СОНО переименовывать, после чего — устанавливать СОНО «с нуля».

По этому, честно говоря, я не смог понять для каких целей делается резервная копия и тратится столько времени на её создание, если она по сути не помогает решить проблему с возникновением ошибки в процессе обновления.

Что бы не тратить столько времени на непонятную процедуру архивации был найден следующий метод: нужно сделать папку «backup» недоступной для создания в ней новых файлов. В этом случае установщик СОНО пропускает процедуру архивации и переходит непосредственно к процессу обновления базы.

В принципе это может сделать каждый используя стандартный «проводник» Windows, но что бы облегчить этот процесс, я создал скрипт, который сам всё это подправляет. Разумеется, что перед его применением нужно, что бы программа СОНО была установлена на компьютере, потому что скрипт сам выясняет в какую папку была установлена программа СОНО исходя из записей установки программы в реестре.

Вот непосредственно тело скрипта:

@echo off
SetLocal EnableDelayedExpansion
chcp 1251

for /f "tokens=1* delims=R:" %%a in ('reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\СОНО НП_is1" /v InstallLocation') do set str1="%%a:%%b" 

rem chcp 866

set str1=!str1:~34!
set str1=!str1:~0,-2!
echo %str1%backup


Set Cur=%str1%backup

echo %Cur%

mkdir "%Cur%"

takeown /f "%Cur%" /r /d y

icacls "%Cur%" /inheritance:e /T /C

icacls "%Cur%" /inheritance:d /T /C
chcp 1251
icacls "%Cur%" /deny All:(S,WD,AD) /T /C
icacls "%Cur%" /deny Все:(S,WD,AD) /T /C
chcp 866

А здесь можно закачать готовый cmd файл.