Вопрос Работа с CMD.exe

Хамик

Старожил
Подскажите, пожалуйста, как можно с помощью cmd перемещать, копировать, удалять папки с файлами и подпапками через секцию [Code]

cmd в смысле cmd.exe
 
Последнее редактирование:

Shegorat

Lord of Madness
Администратор
Почему именно через cmd? Можно сделать и через секцию Code.
 

Хамик

Старожил
Shegorat,Как? cmd в смысле командная строка, через cmd.exe, так как пробовал через модуль SHFileOperation.iss но он что-то не копирует и не перемещает папки.... а встроенных функций не нашел в inno.
 

sergey3695

Ветеран
Модератор
Хамик,
Удаление (или DelTree):
Код:
// Удаление каталога с содержимым
procedure DelDir(dir : string);
var
  r: Integer;
begin
  Exec('cmd.exe', ' /c rd /S /Q  ' + '"'+dir+'"',ExpandConstant('{sys}'), SW_Hide,ewWaitUntilTerminated,r);
end;

// Пример DelDir(ExpandConstant('{app}'));
Копировать CopyFile(копировать файл), или Copy в cmd.exe.
Copy и Replace через командную строку. (тут уж сам делай как надо. пример использования cmd в inno выше (deldir))
 

Хамик

Старожил
sergey3695, Для удаления я использую DelTree, а вот с копированием или перемещением не могу разобраться. Делал так
Код:
Exec('cmd.exe', ' move ' + '"' + ExpandConstant('{src}\Data\DR Updater') + '"' + #32 + '"' +  ExpandConstant('{commonappdata}\Astra\DR Updater') + '"', ExpandConstant('{sys}'), SW_HIDE, ewWaitUntilTerminated, RCode);
происходит зависание инсталлятора и папка не перемещается. Пробовал сразу xcopy результат тот же.
 

sergey3695

Ветеран
Модератор
:D
Код:
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DisableFinishedPage=yes
OutputDir=.

[Code]
procedure copyfiles(fromfile, tofile:string);
var
  res : integer;
begin
if not DirExists(tofile) then
  ForceDirectories(tofile);
  Exec('cmd.exe', ' /c xcopy /Y ' + AddQuotes(fromfile) + ' ' + AddQuotes(tofile),ExpandConstant('{sys}'), SW_Hide,ewWaitUntilTerminated,res);
end;

procedure InitializeWizard();
begin
  copyfiles(ExpandConstant('{src}\1'),ExpandConstant('{src}\2'));
end;
Откуда - куда, причем папка '2' может не существовать, тогда создаться.
 

Хамик

Старожил
sergey3695, Спасибо, но подпапки не копирует...

Разобрался:
Код:
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DisableFinishedPage=yes
OutputDir=.

[Code]
procedure CopyDir(FromDir, ToDir:string);
var
  res : integer;
begin
  Exec('cmd.exe', ' /C XCOPY ' + AddQuotes(FromDir) + ' ' + AddQuotes(ToDir) + ' ' + '/E /I', ExpandConstant('{sys}'), SW_Hide,ewWaitUntilTerminated,res);
end;

procedure InitializeWizard();
begin
  CopyDir(ExpandConstant('{sd}\Driver Puper'),ExpandConstant('{sd}\2'));
end;
 
Последнее редактирование:
Сверху