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

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

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

  1. Ветеран Модератор

    Регистрация:
    11 июн 2012
    Сообщения:
    469
    Симпатии:
    186
    Пол:
    Мужской
    L-e-o-N, инсайд свой сюда выложи, полностью все файлы
     
  2. Ветеран Проверенный

    Регистрация:
    18 июн 2011
    Сообщения:
    906
    Симпатии:
    666
    L-e-o-N у меня все работает делаю так pzlib 3 + msc +srep + lzma
     
  3. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    180
    Симпатии:
    58
    Пол:
    Мужской
     

    Вложения:

    • pack.rar
      Размер файла:
      1,7 МБ
      Просмотров:
      149
    • unpack.rar
      Размер файла:
      931,7 КБ
      Просмотров:
      113
  4. Ветеран Модератор

    Регистрация:
    11 июн 2012
    Сообщения:
    469
    Симпатии:
    186
    Пол:
    Мужской
    L-e-o-N, юзай так:

    [External compressor:msc]
    header = 0
    packcmd = msc c -v -f -tak=9s -mp3=1 -dxt=2 -ddsraw=0 -raw=2 $$arcdatafile$$.tmp $$arcpackedfile$$.tmp

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

    MSC_Unpack.exe вообще выкинь, для распаковки нужна dll только
     
  5. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    180
    Симпатии:
    58
    Пол:
    Мужской
    Не помогло, и кстати проблема не только в pzlib (только что пробовал прикрутить reflate и lzma2), тоесть любой алгоритм который работает как exe-шник не работает
     
    Последнее редактирование: 14 апр 2017
  6. Ветеран Модератор

    Регистрация:
    11 июн 2012
    Сообщения:
    469
    Симпатии:
    186
    Пол:
    Мужской
    L-e-o-N, ищи у себя проблему значит
     
  7. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    180
    Симпатии:
    58
    Пол:
    Мужской
    У меня указан рабочий каталог {app} и не прописан путь к arc.ini (его просто не видит), уже исправил
     
  8. Новичок

    Регистрация:
    16 апр 2017
    Сообщения:
    21
    Симпатии:
    0
    Пол:
    Мужской
    Помогите, пожалуйста с простым скриптом для Inno Setup при использовании pZlib v3, метод сжатия M2 (pzlib+srep+lzma).

    Архивируется/распаковывается "вручную" без проблем.

    А в Inno Setup, либо выдаёт ошибку "заголовок архива повреждён", либо распаковка уходит в бесконечность!
    Какие файлы в архиве есть он определяет - пишет мол распаковка такого-то файла, НО процесс распаковки так и не начинается.
    Так же не работает кнопка "Отменить распаковку", приходится снимать процессы через Диспетчер задач, чтобы закрыть установщик.

    Файлы arc.ini, arc.exe, pzib.exe, добавил, в Temp они извлекаются. Файлы srep.exe, CLS-srep.dll - менял на разные версии. Не помогает, либо вообще пишет, что не может извлечь из-за неизвестного типа сжатия.

    Информацию в arc.ini - - менял, как написано в этой теме ранее, так и брал из pZib.

    Код (Text):
    [External compressor: pzlib]
    header = 0
    packcmd = pZLib e -m2 -t4 $$arcdatafile$$.tmp -o $$arcpackedfile$$.tmp
    unpackcmd = pZLib d -t4 - -o - <stdin> <stdout>
    Распаковывать пробовал и так и так:

    Код (Text):
    if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data-1.bin'),  ExpandConstant('{app}'), '', False, '{#Password}', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}'), notPCFonFLY {PCFonFLY} ) then Break;

    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;
    Подскажите, пожалуйста, что и как нужно делать в чём проблема? Если можно простой пример скрипта для пробы и какую версию Inno Setup и pZlib и прочих библиотек вы используете?
     
  9. Ветеран

    Регистрация:
    5 мар 2014
    Сообщения:
    382
    Симпатии:
    70
    NicTon,
    1. в arc.ini:
    Замени строчку "[External compressor: pzlib]" на эти:
    Код (Inno):
    [External compressor: pzlib]
    header = 0
    packcmd = pZLib e -m2 -t4 - -o - <stdin> <stdout>
    unpackcmd = pZLib d -t4 - -o - <stdin> <stdout>
    2. Распаковывать (через inno) так:
    Код (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;
    3. Отмена установки:
    Код (Inno):
    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;
    Всё это уже было написано на первой странице темы. И на сколько я знаю уже есть cls для pzlib.
     
  10. Новичок

    Регистрация:
    18 май 2017
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    Вы меня извините за дикость, но я никак не могу понять, зачем нужен pZLIB.exe, что с ним делать, и как им пользоваться, объясните пожалуйста.
     
  11. Ветеран

    Регистрация:
    18 сен 2014
    Сообщения:
    480
    Симпатии:
    71
    Пол:
    Мужской
    KEHTYXA_CAH, Как видно из названия - пзлиб нужен для декомпрессии файлов, сжатых методами ZLIB, Deflate и тд. и последующего сжатия фриарком. По скорости разжатия и восстановления он гораздо быстрее прекомпа и рифлейта.
    Как им пользоваться, можно узнать в самом exe файле
     
    Nemko нравится это.
  12. Новичок

    Регистрация:
    18 май 2017
    Сообщения:
    2
    Симпатии:
    0
    Пол:
    Мужской
    Но принцип тот же как и у прекомпа?
     
  13. Ветеран

    Регистрация:
    18 сен 2014
    Сообщения:
    480
    Симпатии:
    71
    Пол:
    Мужской
    KEHTYXA_CAH, Да примерно тот же
     
  14. Ветеран

    Регистрация:
    31 мар 2015
    Сообщения:
    332
    Симпатии:
    171
    Пол:
    Мужской
    Который не работает корректно ...
     
  15. Пользователь

    Регистрация:
    3 дек 2016
    Сообщения:
    102
    Симпатии:
    8
    Пол:
    Мужской
    вышел новы cls с поддержкой ползунка, может кто сможет интегрировать его в скрипт isdone final ?
    пример в архиве
     

    Вложения:

  16. Ветеран Проверенный

    Регистрация:
    18 июн 2011
    Сообщения:
    906
    Симпатии:
    666
    Pipocooling,
     

    Вложения:

    Pipocooling нравится это.
  17. Пользователь

    Регистрация:
    3 дек 2016
    Сообщения:
    102
    Симпатии:
    8
    Пол:
    Мужской
    vint56, попробовал, при установке прогресс не идет, но в папке временных файлов распаковывается архив и установка длится вечно, даже отменить нельзя
     
  18. Ветеран Проверенный

    Регистрация:
    18 июн 2011
    Сообщения:
    906
    Симпатии:
    666
  19. Пользователь

    Регистрация:
    3 дек 2016
    Сообщения:
    102
    Симпатии:
    8
    Пол:
    Мужской
    vint56, нашел причину проблемы, из-за того что архив был сжат через 4x4:b100mb:lzma, бeз 4x4 все отлично распаковалось, так и не понял почему с 4x4 такие проблемы.
     
  20. Ветеран

    Регистрация:
    18 сен 2014
    Сообщения:
    480
    Симпатии:
    71
    Пол:
    Мужской
    Что-то в последнее время ни одной игры не могу нормально пожать через пзлиб...Пресловутая ошибка CRC в четырех играх вылезает (Последняя попытка была на игре mxgp3 the official motocross videogame)...Кто-нибудь нашел вариант как этого избежать?
    ЗЫ. Советуют понизить параметр t100p хотя бы наполовину...Попробую

    Помогло)) Использовал такие параметы для сжатия
    [External compressor ; pZlib]
    header = 0
    packcmd = pZLib e -m2 -x -s -t50p - -o - <stdin> <stdout>
     
    Последнее редактирование: 31 май 2017

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