Genri
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору NightW0lf -- каждый инсталлятор - это эксклюзив. Соответственно и бэкап в каждом случае уникален. Кто-то пользуется копированием, кто-то перемещением, кому-то надо сохранить все, а кому-то только нескоторые файлы. Возможно, что в твоем случае, можно использовать следующее: Код: #include "SHFileOperation.iss" [Setup] AppName=My Program AppVerName=My Program version 1.5 DefaultDirName={pf}\My Program DisableProgramGroupPage=yes [Files] Source: Files\*.*; DestDir: {app}; Flags: ignoreversion recursesubdirs; BeforeInstall: CreateBackup [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; | Здесь при инсталляции, в бэкап сохраняются (перемещением) только те файлы, которые инсталлятор заменяет. При удалении, эти же файлы восстанавливаются (тоже перемещением). Хотя лично мне, перемещение файлов при бэкапе не очень нравится. Да, так быстрее (особенно если файлы большие). Но если в процессе инсталляции что-то рухнет, то есть риск потерять один или несколько файлов. |