1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

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

Тема в разделе "Inno Setup", создана пользователем Oxxx, 23 фев 2019.

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

    Регистрация:
    5 фев 2016
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Всем доброго времени.

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

    Код (Text):
    #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\файлы.

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

    Регистрация:
    11 июл 2014
    Сообщения:
    270
    Симпатии:
    127
    Пол:
    Мужской
    Т.к. вы создаёте бекап папки Data он и делает бекап папки вместе с папкой, вам нужно сделать бекап содержимого каталога, а не папки.
     
  3. Пользователь

    Регистрация:
    5 фев 2016
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    воспользовался другим вариантом, попроще
     

Поделиться этой страницей