backupinno-setupuninstallationpascalscript

How to save a folder when user confirms uninstallation? (Inno Setup)


How can I save a backup copy of an specific folder to user desktop, when user confirms application uninstall?

I tried this without success... Maybe there is an easier way to do it without using code...

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

Thank you guys! :)


Solution

  • Triggering the backup on CurUninstallStepChanged(usUninstall) is the best solution.

    The problems you have are:

    With use of the DirectoryCopy user function (from the question referenced above), you can do:

    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;