Проблема Бэкап/Восстановление

Oxxx

Мимокрокодил
Всем доброго времени.

Хотел использовать для создания резервной копии SHFileOperationi.iss и следующую конструкцию

Код:
#include "путь\SHFileOperation.iss"

[Files]
Source: "путь\*"; DestDir: "{app}"; BeforeInstall: CreateBackup; Flags: ignoreversion recursesubdirs; Tasks: "check3"

[Code]
function MoveFile(const srcFile, destFile: PChar):Integer;
external 'MoveFileA@kernel32.dll stdcall';
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then
begin
MoveDir(ExpandConstant('{app}\Backup\'),ExpandConstant('{app}'));
RemoveDir(ExpandConstant('{app}\Backup\'));
end;
end;
procedure CreateBackup;
var
srcFile, destFile: string;
basePath, shortPath: string;
begin
basePath:= ExpandConstant('{app}');
srcFile:= ExpandConstant(CurrentFileName);
shortPath:= srcFile;
StringChangeEx(shortPath, basePath, '', True);
destFile:= ExpandConstant('{app}\Backup') + shortPath;
ForceDirectories(ExtractFilePath(destFile));
MoveFile(PChar(srcFile), PChar(destFile));
end;

Бэкапит нормально, а при восстановлении проблема - скрипт не перезаписывает папку с заменой, а просто создает в ней свою копию, т.е. если должно быть \Data\файлы, а получается \Data\Data\файлы.

Можно исправить или, может, есть другой аналогичный вариант копирования только заменяемых файлов + восстановлением?
 

zettend

Старожил
Т.к. вы создаёте бекап папки Data он и делает бекап папки вместе с папкой, вам нужно сделать бекап содержимого каталога, а не папки.
 
Сверху