当用户确认应用程序卸载时,如何将特定文件夹的备份副本保存到用户桌面?
我尝试了这个没有成功......也许有一种更简单的方法可以不使用代码...
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usUninstall then
begin
FileCopy('{app}\Profile\*', '{userdesktop}\Backup\Profile\', False);
end;
end;
谢谢你们! :)
答案 0 :(得分:1)
在CurUninstallStepChanged(usUninstall)
上触发备份是最佳解决方案。
你遇到的问题是:
FileCopy
function无法复制文件夹。
为此,请参阅Inno Setup: copy folder, subfolders and files recursively in Code section。
您必须使用ExpandConstant
function来解析{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;