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

Распаковка архива методом PZlib+Srep+Lzma

Тема в разделе "Алгоритмы сжатия", создана пользователем Ray Kazumi, 29 ноя 2016.

  1. Новичок

    Регистрация:
    18 окт 2016
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Мужской
    Возникла небольшая проблема, помогите пожалуйста.

    Батник:
    Код (Text):

    @echo off
    arc.exe a -w.\ -ep1 -dses --dirs -s; -lc- -di -i2 -r "-hppassword" -mpzlib+srep+lzma:a1:mfbt4:d200m:fb273:mc10000:lc8 "data1.bin" "D:\Mafia III\archive1\*"
    pause
     
    Arc.ini
    Код (Text):

    [External compressor: pzlib]
    header = 0
    packcmd = pZLib e -m2 -t4 - -o - <stdin> <stdout>
    unpackcmd = pZLib d -t4 - -o - <stdin> <stdout>

    [External compressor:srep]
    ;options = l%d (minimal match length, default=512)
    header = 0
    packcmd = srep -a1 -mem256m -m5f -l256 $$arcdatafile$$.tmp $$arcpackedfile$$.tmp
    unpackcmd = srep -d $$arcpackedfile$$.tmp $$arcdatafile$$.tmp
     
    Выдает ошибку при распаковке:
    [​IMG]

    P.S pZlib v2. (Ссылка)
     
  2. Ветеран Модератор

    Регистрация:
    11 июн 2012
    Сообщения:
    450
    Симпатии:
    170
    Пол:
    Мужской
    arc.ini и pzlib.exe должны быть в темпе
     
  3. Ветеран

    Регистрация:
    26 дек 2014
    Сообщения:
    315
    Симпатии:
    191
    Пол:
    Мужской
    Извлекаешь файлы в Temp директорию? Вот так:
    Код (Inno):
    ExtractTemporaryFile('arc.ini');
    ExtractTemporaryFile('pZlib.exe');
    А архивы как извлекаешь? Вот так нужно:
    Код (Inno):
    if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data-1.bin'),  ExpandConstant('{app}'), '', False, '{#Password}', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}'), notPCFonFLY {PCFonFLY} ) then Break;
     
    ExPlayer нравится это.
  4. Ветеран

    Регистрация:
    18 сен 2014
    Сообщения:
    448
    Симпатии:
    61
    Пол:
    Мужской
    Еще можно попробовать сменить версию SREP..У меня почему-то распаковывается только с версией 3,93..Ниже - то что на скрине у автора темы
     
  5. Ветеран

    Регистрация:
    5 мар 2014
    Сообщения:
    379
    Симпатии:
    69
    @Timick спасибо за подсказку :)

    Только при нажатии на "Отмена" инсталлятор ставится на паузу и отмену не делает. Можно это как-то решить?
     
  6. Ветеран Проверенный

    Регистрация:
    18 июн 2011
    Сообщения:
    899
    Симпатии:
    658
    Код (Text):
    1) Убивать процесс при отмены установки
    procedure CancelButtonOnClick(Sender: TObject);
    begin
      SuspendProc;
      if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = IDYES then ISDoneCancel:=1;
      Exec(ExpandConstant('{sys}\taskkill.exe'), ' /F /IM pZLib.exe', '', SW_HIDE, ewWaitUntilTerminated, i);
      ResumeProc;
    end;
    2) Убивать процесс при ошибке
      if (CurStep=ssInstall) and ISDoneError then
      begin
      Exec(ExpandConstant('{sys}\taskkill.exe'), ' /F /IM pZLib.exe', '', SW_HIDE, ewWaitUntilTerminated, i);
      end;
      if (CurStep=ssPostInstall) and ISDoneError then begin
        Exec2(ExpandConstant('{uninstallexe}'), '/VERYSILENT', false);
      end;
    end;
     
    agent555, makst, ExPlayer и ещё 1-му нравится это.
  7. Ветеран

    Регистрация:
    31 мар 2015
    Сообщения:
    318
    Симпатии:
    163
    Пол:
    Мужской
    Почему обязательно именно так, а по другому?
    Код (Inno):

    if not ISExec(0, 0, 0, ExpandConstant('{tmp}\arc.exe'), ExpandConstant('x -o+ -cfg"{tmp}\arc.ini" -w"{app}" -hp"{#password}" -dp"{app}" "{src}\*.bin"'), ExpandConstant('{tmp}'), '...', False) then break;
     
    sanekbest1, zapsip и Ученик_77 нравится это.
  8. Пользователь

    Регистрация:
    3 дек 2016
    Сообщения:
    102
    Симпатии:
    8
    Пол:
    Мужской
    Подскажите почему вышеуказанные методы не работают с файлами игры The Talos Principle, что надо в инишнике добавить чтоб pzlib глубже копал ?
     
  9. Ветеран

    Регистрация:
    18 сен 2014
    Сообщения:
    448
    Симпатии:
    61
    Пол:
    Мужской
    Pipocooling,
    К сожалению PZLIB плохо понимает ZIP-потоки...можно сменить метод -m2 на -m1..мне так помогло в игре CoD Black Ops правда конечное сжатие не дало того результата, который выходит в случае использования рифлейта
    Сам хотел бы знать параметры пзлиба для zip'ов
     
  10. Пользователь

    Регистрация:
    3 дек 2016
    Сообщения:
    102
    Симпатии:
    8
    Пол:
    Мужской
    dixen18, -m1 не дал никаких результатот, хотя у того же сейтера в репаке использует The Talos Principle, и версия там походу другая, размер эзешника отличается от того что на паблике
     
  11. Ветеран

    Регистрация:
    18 сен 2014
    Сообщения:
    448
    Симпатии:
    61
    Пол:
    Мужской
    Pipocooling, Последняя версия - третья (hotfix). 32 и 64 битные
     
  12. Пользователь

    Регистрация:
    3 дек 2016
    Сообщения:
    102
    Симпатии:
    8
    Пол:
    Мужской
    dixen18, я не про версию игры а про версию pZLib.exe, в его репаке используетзя pZLib но он отличается от pZLib v2, которым не получается разжать файлы игры :)
     
  13. Ветеран

    Регистрация:
    18 сен 2014
    Сообщения:
    448
    Симпатии:
    61
    Пол:
    Мужской
    Pipocooling, Дак и я про версию PZLIB - она уже v3
    pZLib version 3 is created by Razor12911

    Вот ссылка на архив, если кому надо..Версия финальная по словам Разора
    https://yadi.sk/d/_2rTLwdS37qaPi
     
    Последнее редактирование: 8 янв 2017
    ExPlayer и Pipocooling нравится это.
  14. Пользователь

    Регистрация:
    3 дек 2016
    Сообщения:
    102
    Симпатии:
    8
    Пол:
    Мужской
    dixen18, спасибо огромное, а я то думал v2 последняя)))

    а для чего файлы 2-dll файла и как их использовать ? если можно поделись батником и инишником

    зы, если ужать через 64 битную версию, с 32-битным пзлиб можно будет распаковать ?
     
    Последнее редактирование: 9 янв 2017
  15. Ветеран

    Регистрация:
    25 апр 2014
    Сообщения:
    63
    Симпатии:
    29
    Пол:
    Мужской

    ИЗМЕНИ ФАЙЛ Arc.ini ТАКИМ ОБРАЗОМ

    Arc.ini
    Код (Text):

    [External compressor: pzlib]
    header = 0
    packcmd = pZLib e -m2 -t4 $$arcdatafile$$.tmp -o $$arcpackedfile$$.tmp
    unpackcmd = pZLib d -t4 - -o - <stdin> <stdout>
     
  16. Ветеран Проверенный

    Регистрация:
    18 июн 2011
    Сообщения:
    899
    Симпатии:
    658
    Hunter, а ты в скрипт добавил файлы для распаковки
     
    Последнее редактирование: 9 янв 2017
  17. Ветеран

    Регистрация:
    5 мар 2014
    Сообщения:
    379
    Симпатии:
    69
    ругается на "i": Unknown identifier.

    Где её объявлять и чему она должна равняться?
     
  18. Ветеран

    Регистрация:
    26 дек 2014
    Сообщения:
    315
    Симпатии:
    191
    Пол:
    Мужской
    Это код ошибки. Можешь изменить его, например "ErrorCode". Тип переменной - Integer
     
    ExPlayer нравится это.
  19. Ветеран Проверенный

    Регистрация:
    18 июн 2011
    Сообщения:
    899
    Симпатии:
    658
    ExPlayer,
    var
    i:integer;
     
    ExPlayer нравится это.
  20. Ветеран

    Регистрация:
    5 мар 2014
    Сообщения:
    379
    Симпатии:
    69
    ругается на "i": Unknown identifier.

    Где её объявлять и чему она должна равняться?
    Спасибо :)
     

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