1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

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

Тема в разделе "Nullsoft Scriptable Install System (NSIS)", создана пользователем Хамик, 18 янв 2015.

  1. Ветеран

    Регистрация:
    27 мар 2014
    Сообщения:
    335
    Симпатии:
    65
    Пол:
    Мужской
    Подскажите как перемещать папки с содержимым (файлы, подпапки)?
     
  2. Ветеран

    Регистрация:
    13 фев 2012
    Сообщения:
    250
    Симпатии:
    109
    Хамик, если вы имели в виду бэкап файлов:
    Код (Text):

    [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;
     
     
  3. Ветеран

    Регистрация:
    27 мар 2014
    Сообщения:
    335
    Симпатии:
    65
    Пол:
    Мужской
    Adil, это для inno, не то... здесь ветка nsis
     
  4. Ветеран

    Регистрация:
    13 фев 2012
    Сообщения:
    250
    Симпатии:
    109
    Хамик, не увидел)
     
  5. Он где то тут Администратор

    Регистрация:
    15 июн 2011
    Сообщения:
    703
    Симпатии:
    442
    Тут либо использовать апи, либо писать свой плагин. Хотя может такой кто то и написал, но я не встречал
     
  6. Ветеран

    Регистрация:
    27 мар 2014
    Сообщения:
    335
    Симпатии:
    65
    Пол:
    Мужской
    Krinkels, судя из этого (справка nsis)
    должно быть так
    Код (Text):

    Rename $EXEDIR\App\IFX $LOCALAPPDATA
    Rename $EXEDIR\App\Set\IFX $APPDATA
    но не работает перемещение...
     
  7. Он где то тут Администратор

    Регистрация:
    15 июн 2011
    Сообщения:
    703
    Симпатии:
    442
    Ну это как бы переименование, а не перемещение.

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

    Регистрация:
    27 мар 2014
    Сообщения:
    335
    Симпатии:
    65
    Пол:
    Мужской
    Krinkels, наверное так и придется сделать. И еще вопрос: Как указать папку ProgramData?
     
  9. Он где то тут Администратор

    Регистрация:
    15 июн 2011
    Сообщения:
    703
    Симпатии:
    442
    SetShellVarContext all
    DetailPrint $APPDATA

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

    Регистрация:
    27 мар 2014
    Сообщения:
    335
    Симпатии:
    65
    Пол:
    Мужской
    Krinkels, как здесь указать programdata
    Код (Text):
    CopyFiles "$EXEDIR\Data\IFX\*.*" "здесь путь к programdata\IFX"
     
  11. Он где то тут Администратор

    Регистрация:
    15 июн 2011
    Сообщения:
    703
    Симпатии:
    442
    SetShellVarContext all
    CopyFiles "$EXEDIR\Data\IFX\*.*" "$APPDATA\IFX"
     
    Хамик нравится это.

Поделиться этой страницей