Natrix
Новичок
Доброго времени суток.
Подскажите, пожалуйста. Как откорректировать приведённый скрипт, для бэкапа файлов из нескольких папок. Или другое решение для бэкапа, переносом (не переименованием), заданных файлов и папок (не только заменяемых).
Подскажите, пожалуйста. Как откорректировать приведённый скрипт, для бэкапа файлов из нескольких папок. Или другое решение для бэкапа, переносом (не переименованием), заданных файлов и папок (не только заменяемых).
Код:
[Code]
var
MyTask: TCheckBox;
function MoveFile(const srcFile, destFile: PChar): Integer; external 'MoveFileA@kernel32.dll stdcall';
procedure CurStepChanged(CurStep: TSetupStep);
var
FindFiles: TFindRec;
i: integer;
MyFiles: array of string;
MyDir, BackDir: string;
begin
if CurStep=ssInstall then begin
if MyTask.Checked then begin
MyFiles:=['TS3.exe','*.jpg']; // указать файлы
MyDir:=ExpandConstant('{app}'+'\Files\'); // откуда
BackDir:=ExpandConstant('{app}'+'\_backup_\'); // куда
for i:=0 to GetArrayLength(MyFiles)-1 do
begin
if FindFirst(MyDir+MyFiles[i], FindFiles) then begin
repeat
if not DirExists(BackDir) then begin
CreateDir(BackDir);
end;
MoveFile(MyDir+ FindFiles.Name, BackDir+FindFiles.Name);
until not FindNext(FindFiles);
FindClose(FindFiles);
end;
end;
end;
end;
end;
procedure InitializeWizard();
begin
MyTask:=TCheckBox.Create(WizardForm);
with MyTask do
begin
Parent:=WizardForm.SelectDirPage;
Caption:='Текст';
Left:=ScaleX(0);
Top:=ScaleY(100);
Width:=ScaleX(400);
Height:=ScaleY(15);
TabOrder:=0;
Checked:=True;
end;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
FindFiles: TFindRec;
MyDir, BackDir: string;
begin
if CurUninstallStep = usPostUninstall then begin
MyDir:=ExpandConstant('{app}'+'\Files\'); // куда возвращать
BackDir:=ExpandConstant('{app}'+'\_backup_\'); // откуда брать
if DirExists(BackDir) then begin
if MsgBox('Текст', mbConfirmation, MB_YESNO) = IDYES then begin
if FindFirst(BackDir+'*', FindFiles) then begin
repeat
MoveFile(BackDir+ FindFiles.Name, MyDir+FindFiles.Name);
until not FindNext(FindFiles);
FindClose(FindFiles);
RemoveDir(BackDir);
end;
end;
end;
end;
end;
Последнее редактирование: