Вопрос Как перемещать папки?

Хамик

Старожил
Подскажите как перемещать папки с содержимым (файлы, подпапки)?
 

Adil

Старожил
Хамик, если вы имели в виду бэкап файлов:
Код:
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
UninstallFilesDir={app}\Mod Uninstall

[Code]
procedure CopyFiles(FromPlace, ToPlace: String);
var
    ResultCode: Integer;
begin
    Exec('xcopy.exe', '/E /C /H /R /Y /F /I ' + AddQuotes(FromPlace) + ' ' + AddQuotes(ToPlace), ExpandConstant('{app}'), SW_HIDE, ewWaitUntilTerminated, ResultCode);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if (CurStep = ssInstall) then
begin
    WizardForm.ProgressGauge.Hide;
    WizardForm.StatusLabel.Caption:='Создание резервных копий файлов...';
    CopyFiles(ExpandConstant('{app}') + '\Profiles\V\Achievements\Achievements.txt', ExpandConstant('{app}') + '\BackupDir\Profiles\V\Achievements\');
    WizardForm.ProgressGauge.Show;
    WizardForm.StatusLabel.Caption:=SetupMessage(msgStatusExtractFiles);
  end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if CurUninstallStep = usPostUninstall then
  begin
    CopyFiles(ExpandConstant('{app}') + '\BackupDir\Profiles\V\Achievements\Achievements.txt', ExpandConstant('{app}') + '\Profiles\V\Achievements\');
    DelTree(ExpandConstant('{app}\BackupDir'), True, True, True);
  end;
end;
 

Krinkels

Он где то тут
Администратор
Тут либо использовать апи, либо писать свой плагин. Хотя может такой кто то и написал, но я не встречал
 

Хамик

Старожил
Krinkels, судя из этого (справка nsis)
Копирование файлов
Перевод справки NSIS => CopyFiles
Создание директории
Перевод справки NSIS => CreateDirectory
Переименование/перемещение файлов
Перевод справки NSIS => Rename
Удаление директории
Перевод справки NSIS => RMDir
должно быть так
Код:
Rename $EXEDIR\App\IFX $LOCALAPPDATA
Rename $EXEDIR\App\Set\IFX $APPDATA
но не работает перемещение...
 

Krinkels

Он где то тут
Администратор
Ну это как бы переименование, а не перемещение.

Получается что то типа такого, стандартными средствами:
CreateDirectory - создаем нужную папку
CopyFiles - копируем туда необходимые файлы
RMDir - удаляем ненужную папку
 

Хамик

Старожил
Krinkels, наверное так и придется сделать. И еще вопрос: Как указать папку ProgramData?
 

Krinkels

Он где то тут
Администратор
SetShellVarContext all
DetailPrint $APPDATA

Попробуй так, должно вывести путь к ProgramData
 

Хамик

Старожил
Krinkels, как здесь указать programdata
Код:
CopyFiles "$EXEDIR\Data\IFX\*.*" "здесь путь к programdata\IFX"
 
Сверху