下面的代码供参考。功能:
安装文件前,检查文件是否已经存在。如果存在,则将给文件备份到子目录 “备份文件夹” 中。
在子目录 “备份文件夹” 中自动创建一个批处理文件,运行该批处理文件将恢复所备份的文件到它们原来的位置。
你当然可以在卸载完成后,自动运行该批处理文件,然后删除子目录 “备份文件夹”。不过这个功能还是留给你自己来完成。
[Setup]
AppName=My ProgramAppVersion=1.5
DefaultDirName={pf}\_My ProgramDefaultGroupName=My Program
DirExistsWarning=no
[Files]Source: "e:\HHTest1\*"; DestDir: "{app}"; Flags: recursesubdirs; BeforeInstall: BackupOldFile
Source: "e:\HHTest2\*"; DestDir: "{app}"; Flags: recursesubdirs; BeforeInstall: BackupOldFile
[Code]procedure BackupOldFile();
var BackupDir, CurFilePath, DesFileDir, DesFileName: string;
begin CurFilePath:= ExpandConstant(CurrentFileName);
if FileExists(CurFilePath) then begin
BackupDir:= ExpandConstant('{app}\备份文件夹') if not FileExists(BackupDir + '\恢复.bat') then
begin CreateDir(BackupDir);
SaveStringToFile(BackupDir + '\恢复.bat', '@ ECHO OFF' + #13#10 + 'REM 恢复备份的文件', False); end;
DesFileDir:= ExtractFileDir(CurFilePath); DesFileName:= ExtractFileName(CurFilePath);
FileCopy(CurFilePath, BackupDir + '\' + DesFileName, True); SaveStringToFile(BackupDir + '\恢复.bat', #13#10 + 'copy "' + BackupDir + '\' + DesFileName + '" "' + DesFileDir + '\' + DesFileName + '"', True);
end;end;