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

Поясните новичку про pzlib и алгоритмы сжатия...

Тема в разделе "Алгоритмы сжатия", создана пользователем NicTon, 18 апр 2017.

  1. Новичок

    Регистрация:
    16 апр 2017
    Сообщения:
    21
    Симпатии:
    0
    Пол:
    Мужской
    Здравствуйте!

    Поясните, пожалуйста, новичку где брать pzlib и всю "обвязку" для него остальные библиотеки и что прописывать в батнике?

    Я взял отсюда:

    http://krinkels.org/threads/pzlib_v2-3-versus-reflate.3290/

    Что можно тут использовать и что поменять в батниках и arc.ini?
     
  2. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    146
    Симпатии:
    40
    Пол:
    Мужской
    arc.ini
    [External compressor:pzlib]
    header = 0
    packcmd = pzlib e -m2 -x -s -r9 -t100p -st100p -ct100p - -o - <stdin> <stdout>
    unpackcmd = pzlib d -t100p - -o - <stdin> <stdout>
    в батнике параметр -m... изменить на -mpzlib+...
     

    Вложения:

    • upload.rar
      Размер файла:
      445,2 КБ
      Просмотров:
      98
  3. Новичок

    Регистрация:
    16 апр 2017
    Сообщения:
    21
    Симпатии:
    0
    Пол:
    Мужской

    Здравствуйте! А поподробнее, что и как менять, что за что отвечает? Использовать ли эти "инструменты", и "тот метод" что в архиве той темы или скачивать какие-то другие?

    И самое главное, как потом это распаковать, как "вручную", так и в Inno Setup?

    Простой пример скрипта и алгоритмов сжатия можете показать?

    Спасибо.
     
  4. Ветеран

    Регистрация:
    1 дек 2015
    Сообщения:
    146
    Симпатии:
    40
    Пол:
    Мужской
    arc.ini - [External compressor: pzlib] - Объявление алгоритма
    header = 0 - честно говоря сам не знаю зачем этот параметр, но он ставится в каждом внешнем алгоритме
    packcmd = pzlib e -m2 -x -s -r9 -t100p -st100p -ct100p - -o - <stdin> <stdout> - Команда упаковки:
    e - encode, -m2 - детект deflate streams -x детект reflate и zlib (нужны библиотеки hif2raw_dll.dll, raw2hif_dll.dll), -s - обрабатывает дополнительные данные reflate -r9 - девятка это уровень обработки данных reflate (можно задать любой до 9) -t100p -указывает что для обработки будут использованы 100% ядер процессора (если не указать букву р, то число будет указывать количество потоков для обработки), -st100p -задает количество потоков для сканирования, -ct100p -задает количество потоков для прекомпрессора, - -o - <stdin> <stdout> -задает режим без временных файлов (обработка будет идти совместно с упаковкой данных в архив и обработкой другими алгоритмами), при этом reflate не будет обращатся к жесткому диску, за счет чего упаковка будет проходить быстрее
    unpackcmd = pzlib d -t100p - -o - <stdin> <stdout> - команда распаковки (нужно включить в arc.ini который используется isdone), d- decode, остальное уже расписано выше.
    Я прикрепил архив к предыдущему моему сообщению, там лежит последняя версия reflate, вместе со своими библиотеками
    Когда вы используете команду упаковки (что то вроде arc.exe a ... -msrep+lzma:ultra ... data.bin packetdata/*)
    srep и lzma являются такими же алгоритмами и чтобы использовать pzlib все что нужно это дописать pzlib так: -mpzlib+srep+lzma:ultra.
    Что касается Inno Setup то распаковка будет идти также через isarcextract.Нужно изменить:
    1. В секцию [Files] нужно добавить:
      1. Source: Files\pzlib.exe; DestDir: {tmp}; Flags: dontcopy
      2. Source: Files\arc.ini; DestDir: {tmp}; Flags: dontcopy (если не существует)
      3. Source: Files\hif2raw_dll.dll; DestDir: {tmp}; Flags: dontcopy
      4. Source: Files\Include\raw2hif_dll.dll; DestDir: {tmp}; Flags: dontcopy
    2. В место распаковки библиотек (обычно в скрипте находится непосредственно перед распаковкой архивов)
      1. ExtractTemporaryFile('pzlib.exe');
      2. ExtractTemporaryFile('arc.ini');(если не существует)
      3. ExtractTemporaryFile('hif2raw_dll.dll');
      4. ExtractTemporaryFile('raw2hif_dll.dll');
    3. И обеспечить нормальную работу инсталятора в случае отмены установки, или возникновения ошибки:
      1. Найти код: if (CurStep=ssPostInstall) and ISDoneError then begin (обычно находится после распаковки архивов)
      2. В следующую строку добавить код: Exec(ExpandConstant('{sys}\taskkill.exe'), ' /F /IM pzlib.exe', '', SW_HIDE, ewWaitUntilTerminated, ISDoneCancel);
    4. В всех ISArcExtract нужно задать путь к arc.ini
      1. if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data.bin'), ExpandConstant('{app}\'), '', false, 'пароль архива(если нет то пустая строка)', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}'), notPCFonFLY{PCFonFLY}) then break;
     
    zapsip, stalqer и Adil нравится это.
  5. Новичок

    Регистрация:
    16 апр 2017
    Сообщения:
    21
    Симпатии:
    0
    Пол:
    Мужской
    L-e-o-N, спасибо вам за ответы - написал вам в Личку!
     
  6. Старожил

    Регистрация:
    25 дек 2016
    Сообщения:
    122
    Симпатии:
    20
    L-e-o-N, Здравствуйте.
    А что в pZLib дают следующие параметры при кодировании : -b2048 -wm2048 -t8 -s2048 ?

    -t8 это количество потоков, в моём случае 8, а остальное ?
     
  7. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    1.215
    Симпатии:
    782
    zapsip, -b +2048 к силе -wm +2048 к вере -s +2048 к мощности заклинания
     

    Вложения:

    zapsip нравится это.
  8. Старожил

    Регистрация:
    25 дек 2016
    Сообщения:
    122
    Симпатии:
    20
    sergey3695, Благодарю за скорый ответ .
    А каков разбег упомянутых вами и мною параметров ?
    То есть от скольки и до скольки их можно назначать ?
    Или у меня величины уже достигли максимума 2048 ?
     
  9. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    1.215
    Симпатии:
    782
    zapsip, насчет этого не знаю. я pzlib не пользуюсь. скорее всего эти параметры уже подобраны оптимально и раз в примере не указано их использование, то и трогать их не стоит.
     
    zapsip нравится это.
  10. Ветеран

    Регистрация:
    31 мар 2015
    Сообщения:
    318
    Симпатии:
    163
    Пол:
    Мужской
    packcmd = pzlib e -max $$arcdatafile$$.tmp -o $$arcpackedfile$$.tmp
     
    zapsip нравится это.
  11. Старожил

    Регистрация:
    25 дек 2016
    Сообщения:
    122
    Симпатии:
    20
    sergey3695, очень приятное чувство юмора :)
    SBalykov, Буду пробовать.
    Ваши ответы всегда максимально лаконичны и их нельзя больше сократить [без ущерба смысла или действенности] ни на пол-буквы :)
    Как крылатые фразы настоящих мудрецов.
    Очень приятно получать советы от вас обоих.
     
  12. Ветеран Проверенный

    Регистрация:
    18 июн 2011
    Сообщения:
    899
    Симпатии:
    658
    zapsip нравится это.

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