Проблема с сжатием

Armenish

Новичок
Извиняюсь что достаю вас, но есть ли способ распаковки архивов через reflate_srep_arc_GOZARCK.7z в Inno Setup ?
 

Timick

Старожил
Спасибо огромное, результат офигенный, почти вдвое сжимает некоторые файлы :drinks:

Можете пример дать как сразу папку через батник сжимать и как в inno setup прописать распаковку ?
У меня вроде получилось сжать папками (Смотри вложение), а как в инно прописать, самому интересно:)
 

Вложения

Armenish

Новичок
Всем спасибо за ответы, всё работает))))

Теперь ясно как они умудрились так сжать её, посмотрим как долго устанавливаться будет)))
 

Snoopak96

Старожил
vint56,
Вот за каким чёртом ты это сделал, видимо пиратки GTA 4 с устновкой в одни сутки было мало, теперь ЖТА 5 с устоновкой в двое суток надо.

Armenish,
paq тогда уж после рефлейта можно заюзать чтоб наверняка меньше всех.
 
Последнее редактирование:

vint56

Ветеран
Проверенный
Snoopak96, а ты будеш качать такие репаки я нет
 

toolame

Старожил
Проверенный
ачо reflate круче precomp'a?
вроде одно и тоже делают o_O
реквестирую cls для фриарка :3
 

Armenish

Новичок
Snoopak96, тут дело не в размере, вот столько людей откликнулись и помогли, практически на блюдечке всё поднесли и помогли разобраться и понять как это 60 гб ужали до 35.

А вот этот скотина ситер даже сказать не хотел как добился такого сжатия, а сам он небось на этом же форуме узнал как ужать её и теперь выдает якобы за своё, недопрогер хренов он короче!
 

vint56

Ветеран
Проверенный
Здесь 2 выбора
1 качать 60 гигов
2 35 но время установки очень долгое и каждый сам решит что ему качать
тест на время
x64f.rpf после reflate_srep_lzma время создания архива 17 минут вес 1 028 757 504 байт после 513 153 332 байт распаковка 12 минут занимает
 
Последнее редактирование:

Armenish

Новичок
vint56, по мне так в репаке вообще нет смысла, игра уже 5 дней как валяется на трекерах, даже у кого скорость слабая мог бы уже скачать, а в день релиза просто скопировать кряк сверху.
 

Skymmer

Новичок
Проверенный
ачо reflate круче precomp'a?
вроде одно и тоже делают
реквестирую cls для фриарка
Нет, не одно и то же, с технической точки зрения. И нет, reflate не круче precomp-а.

Precomp
сканирует входные данные на предмет наличия в них заголовка сжатого deflate потока. Как только такой заголовок найден, Precomp пытается расжать его и делает он это, исходя из предположения, что это "правильный" поток, не выходящий за рамки deflate спецификации. Если поток удалось расжать, то precomp начинает "драчить" этот поток, перебирая комбинации уровня сжатия zlib и уровни памяти. А таких комбинаций может быть 81 штука.
Если повезло и некая комбинация дала сжатый поток идентичный тому, что был найден, то расжатый поток пишется в pcf файл и precomp переходит к следующему.

Reflate
тоже сканирует данные и ищет сжатые потоки, и пытается их расжать. Но на основе собственной реализации deflate, которая учитывает некоторые нестандартные реализации сжатия.
Это и хорошо и плохо. Хорошо тем, что некоторые потоки, которые не расжались precomp-ом, расжимаются через Reflate. Плохо тем, что подобная реализация, для успешного восстановления сжатого потока, использует трюк.
Когда reflate расжал поток, то он в отличии от precomp, ничего не "дрочит". Он не знает с каким уровнем сжатия\памяти был сделан поток и ему на это даже наплевать. Для успешного воссоздания оригинального сжатого потока, reflate использует файлы коррекции, которые позволяют получить идентичность. Вы сами можете увидеть эти файлы в папке, где находятся расжатые потоки. Это файлы с расширением hif. Именно поэтому reflate гораздо медленнее Precomp и именно поэтому reflate менее эффективен чем precomp на тех данных, где precomp видит и обрабатывает сжатые потоки.

А теперь самое неприятное.
Мало того, что reflate медленный, так он еще и глючный.
1. Нет поддержки больших файлов.
Вы можете не заметить этого, так как в некоторых версиях, при достижении некого порога, reflate просто начнет либо перезаписывать текущие unp файлы, либо создавать новые с адресами, которые перехлестнут другие данные. Сколько осилит reflate на ваших данных - предсказать невозможно.
Так что если кто планирует заюзать reflate на 60 ГБ данных - не тратьте свое время.​
2. reflate может встать колом на ровном месте или крэшнуться, или вызвать ошибку распаковки.
В результате долгих тестов выяснилось, что на некоторых потоках, reflate теряет несколько байт и создает сжатый поток, который короче оригинального, либо просто крэшится.
Можете попробывать взять прикрепленный файл, извлечь из него reflate_error.dat и попробывать сжать.​
3. В reflate нет рекурсии.
Так что на данном этапе, Reflate - это эксперимент, непригодный для использования.
 

Вложения

Последнее редактирование:

Armenish

Новичок
Skymmer, а кроме Precomp и Reflate есть что-то другое для разжатия ? Я думаю механики как раз Reflate и используют часто, хз.

Сжимать прекомпом в брут режиме нереально просто, на это года уйдут :unknown:

П.С. если хеш сумма извлеченных файлов совпадает с оригиналом, получается что файлы точно не были повреждены, ведь если при распаковке файлы теряют байты то размер не может же совпадать ?
 
Последнее редактирование:

Adil

Старожил
Разжимать гта 5 прекомпом или рефлейтом это уже идиотизм. Пока 16 гигабайтный гта 4 установится обалдеть можно, а тут их 60 (без видео аудио наверное 40 гб).
 

toolame

Старожил
Проверенный
почитал еще это, голова заболела...
а level нужно подбирать путем перебора (1-9) ? или он толком ни на что не влияет?
и эти dll'ки для кого, ктонить в курсе?
так то он не очень и медленный, если все операции в памяти делаются. На HDD конечно хреново наверно, все таки из одного 500 мегов файла, получать ~15к штук мелких -- это жуть для диска
 

toolame

Старожил
Проверенный
кому интересна более тесная интеграция reflat'а с фриарком, смотрите прикрепленный файл
как пользоваться?
закидываете файлы из архива в директорию фриарка (сам фриарк должен быть в %PATH% само собой)
далее обычным способом, например так: reflate:l6:s100:t4+rep:512mb+lzma:64mb:max
в итоге reflate отработает в режиме компрессии 6 (l6), пропустит блоки меньше 100 байт (s100) и все это в 4 потоках (t4) :3
хотя если %TEMP% на HDD, от мультипоточности толку наверно небуит...

возможны баги в батнике, дайте знать, если что.
 

Вложения

Armenish

Новичок
toolame, а что по поводу распаковки в inno setup ? что-то можно сделать чтоб прогрессбар нормально отображался ?

P.S. а как в батнике прописать ?

arc.exe a -ep1 -dses --dirs -s; -wD:\ -lc- -di -i2 -r -reflate:l6:s100:t4+srep:l512+lzma:a1:mfbt4:d200m:fb128:mc1000:lc8 Data.bin Data\*
pause

Так не работает
 
Последнее редактирование:

Armenish

Новичок
П.С. вопрос по поводу прогрессбара еще актуален, через records.inf не работает, прогрессбар при распаковке несколько заново начинается.

Можно как-то совместить распаковку батника с работой прогрессбара ?
 
Сверху