Как сохранить папку, когда пользователь подтверждает удаление? (Inno Setup)
Как сохранить резервную копию определенной папки на рабочем столе пользователя, когда пользователь подтверждает удаление приложения?
Я попробовал это без успеха... Может быть, есть более простой способ сделать это без использования кода...
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
begin
FileCopy('{app}\Profile\*', '{userdesktop}\Backup\Profile\', False);
end;
end;
Спасибо вам, ребята!:)
1 ответ
Решение
Запуск резервного копирования на CurUninstallStepChanged(usUninstall)
это лучшее решение.
Проблемы у вас есть:
FileCopy
функция не может копировать папки.Для этого смотрите Inno Setup: рекурсивно копируйте папки, подпапки и файлы в разделе кода.
Вы должны использовать
ExpandConstant
функция для разрешения{app}
и{userdesktop}
константы.Вы должны создать целевую папку.
С использованием DirectoryCopy
Пользовательскую функцию (из приведенного выше вопроса) можно выполнить:
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
SourcePath: string;
DestPath: string;
begin
if CurUninstallStep = usUninstall then
begin
SourcePath := ExpandConstant('{app}\Profile');
DestPath := ExpandConstant('{userdesktop}\Backup\Profile');
Log(Format('Backing up %s to %s before uninstallation', [SourcePath, DestPath]));
if not ForceDirectories(DestPath) then
begin
Log(Format('Failed to create %s', [DestPath]));
end
else
begin
DirectoryCopy(SourcePath, DestPath);
end;
end;
end;