Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Пользователь


Сообщения: 117
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


Сделал простенький сценарий для резервного копирования папки сохранений программы.
Программа создает сохранения на протяжении всего времени своей работы.
Все хорошо работает, но есть один досадный нюанс.
Предусмотрено, если выйти из программы, создание резервных копий прекращается и открывается папка сохранений.
Но! Если интервал создания резервных копий сделать достаточно большим (мне нужно 10 минут), после выхода из программы приходится ждать завершения этого временнОго периода, что очень не удобно.
Как сделать, чтобы выход из программы прерывал таймер отсчета времени? Не могу сообразить, что нужно сделать.

Сценарий

Код: Выделить весь код
Unicode true
!include "MUI2.nsh"
!include "Logiclib.nsh"
!include "ProcessFunc.nsh"
!include "FileFunc.nsh"

Var datetime
Var BackupDir
Var SourseDir

Name "SomeAPP Saver"
OutFile "SomeAPP.Saver.exe"
InstallDir "D:\SomeAPP\"
ShowInstDetails show

!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"

RequestExecutionLevel admin

!macro backupLoop
  Loop:
${If} ${ProcessExists} "SomeAPP.exe"
    ; дата в формате YYYY-MM-DD_HH-MM
    ${GetTime} "" "L" $0 $1 $2 $3 $4 $5 $6
    StrCpy $datetime "$0-$1-$2_$4-$5"
    ; Создание папки с меткой даты
    StrCpy $BackupDir "$LOCALAPPDATA\SomeAPP\Saved\$datetime_SomeAPPSaved"
    CreateDirectory $BackupDir
    ; Создание резервной копии папки 'SomeAPPSaved' в родительской папке
    StrCpy $SourseDir "$LOCALAPPDATA\SomeAPP\Saved\SomeAPPSaved"
    CopyFiles /SILENT "$SourseDir" "$BackupDir"
    Sleep 60000 ; 1 минута интервал повтора резервирования
${Else}
    Goto done
${EndIf}
    Goto Loop
  done:
!macroend

Section
Exec "$INSTDIR\SomeAPP.exe"
${If} ${ProcessExists} "SomeAPP.exe"
    !insertmacro backupLoop
Goto done1
${Else}
     done1:
ExecShell "open" "$LOCALAPPDATA\SomeAPP\Saved"
${EndIf}
     Quit
SectionEnd

Function .onVerifyInstDir
    IfFileExists "$INSTDIR\SomeAPP.exe" PathGood
    Abort
PathGood:
FunctionEnd

Последний раз редактировалось Kopejkin, 05-04-2025 в 19:29.


Отправлено: 13:06, 31-03-2025 | #2891