if IsComponentSelected('text\eng') then Exec(ExpandConstant('{cmd}'), ExpandConstant('cmd /c move /y GAME\_RUS\*.* GAME\DATA '), ExpandConstant('{app}'), SW_HIDE, ewWaitUntilTerminated, ResultCode);Exec(ExpandConstant('{cmd}'), ExpandConstant('cmd /c move /y GAME\_RUS\*.* GAME\DATA '), ExpandConstant('{app}'), SW_HIDE, ewWaitUntilTerminated, ResultCode);
примерно так
заработало но не все файлы перенеслись, почему-то видео файлы остались в старой папке
подскажите как переместить и заменить существующие папки и файлы после установки ?
[Code]
const
Backup_COPY = 1;
Backup_MOVE = 2;
procedure MoveDir(BaseDir, DestDir, SubDirs, Filename: String; Flag: DWORD);
var
FSR: TFindRec;
file1, file2, sub: String;
begin
Log(AddBackslash(BaseDir)+Addbackslash(SubDirs)+Filename);
if FindFirst(AddBackslash(BaseDir)+Addbackslash(SubDirs)+Filename, FSR) then begin
try
repeat
if (FSR.Name='.')or(FSR.Name='..') then Continue;
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY <> 0 then begin
if SubDirs='' then sub:=FSR.Name else
sub:=AddBackslash(SubDirs)+FSR.Name;
MoveDir(BaseDir, DestDir, sub, Filename, Flag);
end else
begin
file1:=AddBackslash(BaseDir)+Addbackslash(SubDirs)+FSR.Name;
file2:= file1;
StringChange(file2, BaseDir, DestDir);
ForceDirectories(ExtractFilePath(File2));
if Flag = Backup_MOVE then begin
if FileExists(file2) then DeleteFile(file2);
RenameFile(PAnsiChar(File1), PAnsiChar(File2));
end else FileCopy(PAnsiChar(File1), PAnsiChar(File2), false);
end;
until not FindNext(FSR);
finally
FindClose(FSR);
end;
end;
end;
procedure CopyMoveDir(FromDir, DestDir, Files: String; idx: Smallint);
var
tmp, Filename, sub, name, func: String; flag: DWORD;
k: Integer;
begin
tmp:= Files;
ForceDirectories(DestDir);
repeat
k:= Pos(',', tmp);
if k=0 then k:= Length(tmp)+1;
Filename:= Trim(Copy(tmp, 1, k-1));
Delete(tmp, 1, k);
func:= copy(Filename, 1, 5);
if (Lowercase(func)='copy:')or(Lowercase(func)='move:') then begin
Delete(Filename, 1, 5);
case Lowercase(func) of
'move:': Flag:= Backup_MOVE;
'copy:': Flag:= Backup_COPY;
end;
end else
Flag:= Backup_MOVE;
name:= Trim(ExtractFilename(Filename));
sub:= Trim(ExtractFilePath(Filename));
MoveDir(FromDir, DestDir, sub, name, flag);
tmp:= Trim(tmp);
until tmp='';
RemoveDir(FromDir);
if (idx = 1) and DirExists(FromDir) then
DelTree(FromDir, True, True, True);
end;
//--- для перемещения всех файлов использовать: move:*.*
//--- для копирования всех файлов использовать: copy:*.*
//--- цифра 1 в конце процедуры, указывает на удаление папки откуда перемещаете\копируете
//CopyMoveDir(ExpandConstant('{src}\backup'), ExpandConstant('{src}\backup22'), 'move:*.*', 1);
CopyMoveDir(ExpandConstant('{app}\GAME\_RUS'), ExpandConstant('{app}\GAME\DATA'), 'move:*.*', 1);
спасибо большоеКод:[Code] const Backup_COPY = 1; Backup_MOVE = 2; procedure MoveDir(BaseDir, DestDir, SubDirs, Filename: String; Flag: DWORD); var FSR: TFindRec; file1, file2, sub: String; begin Log(AddBackslash(BaseDir)+Addbackslash(SubDirs)+Filename); if FindFirst(AddBackslash(BaseDir)+Addbackslash(SubDirs)+Filename, FSR) then begin try repeat if (FSR.Name='.')or(FSR.Name='..') then Continue; if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY <> 0 then begin if SubDirs='' then sub:=FSR.Name else sub:=AddBackslash(SubDirs)+FSR.Name; MoveDir(BaseDir, DestDir, sub, Filename, Flag); end else begin file1:=AddBackslash(BaseDir)+Addbackslash(SubDirs)+FSR.Name; file2:= file1; StringChange(file2, BaseDir, DestDir); ForceDirectories(ExtractFilePath(File2)); if Flag = Backup_MOVE then begin if FileExists(file2) then DeleteFile(file2); RenameFile(PAnsiChar(File1), PAnsiChar(File2)); end else FileCopy(PAnsiChar(File1), PAnsiChar(File2), false); end; until not FindNext(FSR); finally FindClose(FSR); end; end; end; procedure CopyMoveDir(FromDir, DestDir, Files: String; idx: Smallint); var tmp, Filename, sub, name, func: String; flag: DWORD; k: Integer; begin tmp:= Files; ForceDirectories(DestDir); repeat k:= Pos(',', tmp); if k=0 then k:= Length(tmp)+1; Filename:= Trim(Copy(tmp, 1, k-1)); Delete(tmp, 1, k); func:= copy(Filename, 1, 5); if (Lowercase(func)='copy:')or(Lowercase(func)='move:') then begin Delete(Filename, 1, 5); case Lowercase(func) of 'move:': Flag:= Backup_MOVE; 'copy:': Flag:= Backup_COPY; end; end else Flag:= Backup_MOVE; name:= Trim(ExtractFilename(Filename)); sub:= Trim(ExtractFilePath(Filename)); MoveDir(FromDir, DestDir, sub, name, flag); tmp:= Trim(tmp); until tmp=''; RemoveDir(FromDir); if (idx = 1) and DirExists(FromDir) then DelTree(FromDir, True, True, True); end; //--- для перемещения всех файлов использовать: move:*.* //--- для копирования всех файлов использовать: copy:*.* //--- цифра 1 в конце процедуры, указывает на удаление папки откуда перемещаете\копируете //CopyMoveDir(ExpandConstant('{src}\backup'), ExpandConstant('{src}\backup22'), 'move:*.*', 1);
ваша команда для выполнения нужной задачи:
далее сами привяжите к выполнению по компонентуКод:CopyMoveDir(ExpandConstant('{app}\GAME\_RUS'), ExpandConstant('{app}\GAME\DATA'), 'move:*.*', 1);