Как сохранить папку, когда пользователь подтверждает удаление? (Inno Setup)

Как сохранить резервную копию определенной папки на рабочем столе пользователя, когда пользователь подтверждает удаление приложения?

Я попробовал это без успеха... Может быть, есть более простой способ сделать это без использования кода...

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if CurUninstallStep = usUninstall then
  begin
    FileCopy('{app}\Profile\*', '{userdesktop}\Backup\Profile\', False);
  end;
end;

Спасибо вам, ребята!:)

1 ответ

Решение

Запуск резервного копирования на CurUninstallStepChanged(usUninstall) это лучшее решение.

Проблемы у вас есть:

С использованием 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;
Другие вопросы по тегам