Magellano:
Помогите пожалуйста
Собираю простейший инсталл, задача которого создать бэкап заменяемых файлов при установке и при удалении вернуть их обратно на место.
Используется SHFileOperation.iss (содержимое здесь)
При бэкапе создавалась структура - папка Data и в ней заменяемые файлы.
Проблема при восстановлении - восстанавливаемая папка Data с содержимым перемещается не в корень, откуда бэкапилась, а в папку Data (исходную), т.е получается Data\Data\файлы
Что подправить?
Код:
Помогите пожалуйста
Собираю простейший инсталл, задача которого создать бэкап заменяемых файлов при установке и при удалении вернуть их обратно на место.
Используется SHFileOperation.iss (содержимое здесь)
При бэкапе создавалась структура - папка Data и в ней заменяемые файлы.
Проблема при восстановлении - восстанавливаемая папка Data с содержимым перемещается не в корень, откуда бэкапилась, а в папку Data (исходную), т.е получается Data\Data\файлы
Что подправить?
Код:
#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; |