Quantcast
Channel: Ru.Board
Viewing all articles
Browse latest Browse all 892392

Inno Setup (создание инсталяционных пакетов) (2406) / Обсуждение работы - (часть №15)

$
0
0
Magellano:
Помогите пожалуйста

Собираю простейший инсталл, задача которого создать бэкап заменяемых файлов при установке и при удалении вернуть их обратно на место.
Используется 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;

Viewing all articles
Browse latest Browse all 892392

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>