Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » WinRAR (часть 5)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126

Открыть новую тему     Написать ответ в эту тему

Maz



Дед Мазай
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
По вопросам лечения (кряки, патчи и т.д.), а также разблокировки архивов, обращаемся в «Варезник».
Отдельная тема по сборкам WinRAR
Предыдущие части темы: 0 1 | 2 | 3 | 4



 
Официальный русский сайт: win-rar.com
Официальный e-mail разработчика WinRAR (писать по-русски): dev@rarlab.com
 
Русская финальная версия 7.01 | 32-bit | 64-bit    
Английская финальная версия 7.01 | 32-bit | 64-bit
Русская бета-версия 7.10 beta 1 | 64-bit    
Английская бета-версия 7.10 beta 1 | 64-bit
Важная информация о ссылках Список изменений
Дополнительно Коллекционный архив версий (с 1995 года) | Официальный архив (с 2002 года по FTP)

Примечание: английская бета-версия обновляется регулярно, без изменения номера версии. подробнее...
Скачать RAR для macOS, FreeBSD, Linux, Android можно здесь.

Таблица совместимости версий с различными ОС

Версия 3.62 (ru) с подарочным ключом (респект камраду elmorte)

Коллекционный архив 16- и 32-бит версий WinRAR 1.54b - 7.01 (1995-2024): скачать (342.2 МБ) [обновлено 15.05.2024]

вместо F.A.Q. || альтернативные архиваторы

Почему задерживается русская версия? А при русском разработчике на языке XXX уже давно есть. Не захламляйте тему подобными вопросами.

Кому не нравится новая тема оформления - скачайте с официального сайта rarlab.com (из раздела Themes) и установите себе WinRAR Classic theme by Francesco Indrio
Стандартная (48x36). Маленькие кнопки (24x24)

В теме активно отвечает на вопросы автор архиватора Евгений Рошал! Ситуация уникальная, прошу пользоваться. :)
 
Таблицы для наглядности с соотношением размера словаря к потребляемой ОЗУ:
с ключом mcx | без ключа mcx

Всего записей: 39128 | Зарегистр. 26-02-2002 | Отправлено: 08:31 31-07-2023 | Исправлено: DimmY, 00:16 10-11-2024
destiny_child



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А почему подобный файл ВООБЩЕ в принципе позволительно считать нормальным и даже пытаться ДАТЬ что-то распаковать/увидеть,  
а не орать "матом", что это исковерканный, не подпадающий под строгое определение формата ZIP файл, который предлагается срочно
отправить на проверку куда угодно.
 
Ведь не открывается это такой файл просто по тому, что у него расширение ZIP?
Явно же проверка на формат/описание типа архива обязан включать в себя и анализ ВСЕЙ структуры.
С самого начала, а не с конца...

Всего записей: 3868 | Зарегистр. 01-04-2006 | Отправлено: 12:51 18-11-2024 | Исправлено: destiny_child, 12:52 18-11-2024
EugeneRoshal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
destiny_child

Цитата:
а не орать "матом", что это исковерканный, не подпадающий под строгое определение формата ZIP файл, который предлагается срочно

Так он попадает под определение. Какие-то непонятные данные в начале архива могут быть SFX модулем. А дальше идет собственно архив - вторая часть склейки.

Цитата:
Явно же проверка на формат/описание типа архива обязан включать в себя и анализ ВСЕЙ структуры.
С самого начала, а не с конца...

У ZIP в конце архива расположена central directory с метаданными файлов. Насколько я понимаю, такой формат выбран для ускорения чтения оглавления архива. И если мы действительно хотим его ускорить, то читать ZIP архив нужно именно с конца, с central directory.

Всего записей: 2388 | Зарегистр. 29-04-2013 | Отправлено: 13:23 18-11-2024
uShell

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
А почему подобный файл ВООБЩЕ в принципе позволительно считать нормальным и даже пытаться ДАТЬ что-то распаковать/увидеть, а не орать "матом", что это исковерканный, не подпадающий под строгое определение формата ZIP файл, который предлагается срочно отправить на проверку куда угодно.

Согласен. Документация чётко говорит, что

Цитата:
A ZIP file MUST have only one "end of central directory record".

Другое дело, что архиватор не обязан проверять, так ли оно на самом деле, и вполне может найти первую такую запись и объявить её единственной. Лично я, как и EugeneRoshal в посте выше, склоняюсь к тому, что ZIP-архив надо читать с конца (вот почему), как и PDF: тогда из двух архивов архиватор должен попытаться открыть второй, счесть его повреждённым (смещение central directory указывается от начала файла!) и грязно выругаться выдать пользователю предложение восстановить архив. А уже в процедуре восстановления можно читать оба архива. Впрочем, ругать WinRAR пока не за что: в конце концов, в том же PDF разработчик в своём ПО отступал от своих же стандартов.
 
Ну и в завершение укажу на недоработку в структуре ZIP-архива. Что если в комментарии к архиву, который расположен после end of central directory record, будет присутствовать корректный ZIP-архив (с правильно посчитанными смещениями)? Кого из них открывать?

Всего записей: 1099 | Зарегистр. 12-06-2019 | Отправлено: 13:26 18-11-2024 | Исправлено: uShell, 13:28 18-11-2024
EugeneRoshal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
uShell
В документации не раскрываются технические подробности ZIP SFX архивов. А по факту первая central directory может быть причислена к SFX модулю, и тогда вторая оказывается единственной. Смещения в ZIP тоже зачастую указаны без учета размера SFX модуля.

Всего записей: 2388 | Зарегистр. 29-04-2013 | Отправлено: 13:40 18-11-2024 | Исправлено: EugeneRoshal, 13:41 18-11-2024
destiny_child



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EugeneRoshal (пост)
Цитата:
Какие-то непонятные данные в начале архива могут быть SFX модулем.
EugeneRoshal (пост)
Цитата:
В документации не раскрываются технические подробности ZIP SFX архивов.

Т.е. любая последовательность байт в начале рассматривается как ZIP SFX? Без малейшей попытки даже как-то вычленить какие-то характерные паттерны,
которые обязаны существовать для ZIP SFX?

Всего записей: 3868 | Зарегистр. 01-04-2006 | Отправлено: 13:57 18-11-2024
uShell

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Смещения в ZIP тоже зачастую указаны без учета размера SFX модуля.

Это явное отступление от документации:

Цитата:
  4.3.16  End of central directory record:
<...>
      offset of start of central
      directory with respect to
      the starting disk number        4 bytes

Понятно, что WinRAR вынужден учитывать особенности сторонних реализаций, но в таких случаях лучше по примеру 7-Zip выдавать предупреждение.
 

Цитата:
Т.е. любая последовательность байт в начале рассматривается как ZIP SFX?

Тут даже не SFX в обычном смысле. Разумеется, "нормальный" ZIP-архив должен начинаться с Local file header (хотя допустимо и с end of central directory signature), но, вообще говоря, упакованные данные могут быть в произвольных местах файла, в том числе не последовательно и не с самого начала. Единственное ограничение: оглавление (central directory) должно быть после всех файлов, а end of central directory - после оглавления.

Всего записей: 1099 | Зарегистр. 12-06-2019 | Отправлено: 14:14 18-11-2024 | Исправлено: uShell, 14:16 18-11-2024
insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EugeneRoshal

Цитата:
 Если обрабатывать ZIP архив, читая central directory в конце файла, оно так и получится. Central directory сошлется на вторую часть, а первая окажется неопределенными данными по типу SFX модуля.  

Значит, я таки правильно догадался о причинах именно такой работы. Спасибо за пояснение.

Цитата:
Я не видел у пользователей WinRAR потребности прочесть все части специально созданного склеенного ZIP архива.

А если бы вдруг появилась, насколько реально обеспечить поддержку чего-то подобного режиму парсера # у 7zip для чтения всяких подобных матрёшек (sfx+архив, или jpeg+rar, или ещё какие "склейки")?
Возможно не прям один-в-один (так-то такая задача получается уже решена, не вижу смысла "тупо повторять"), но какой-то индикатор наличия "лишних байтов" до собственно самих байтов архива и после него. Пока не сформулирую даже приблизительно, чисто саму суть представляю.
Цель - иметь возможность узнать  о том, что "что-то не так" и помимо основных данных есть что-то ещё. Тем более раз оно пропускается (по любым причинам, будь то корректный sfx-заголовок или что-то ещё), значит сам факт наличия таких "хвостов" определяется, а потому и отдельную функцию городить не потребуется. Просто где-то отобразить статус, а не продолжать молча работать.
 
Добавлено:
destiny_child

Цитата:
 Т.е. любая последовательность байт в начале рассматривается как ZIP SFX? Без малейшей попытки даже как-то вычленить какие-то характерные паттерны,
которые обязаны существовать для ZIP SFX?

А как можно вычленять то, не знамо чего?
Сегодня у нас одни версии программ, завтра другие. Сегодня одни ОС, завтра другие.
Невозможно заранее учесть все возможные заголовки и маркеры просто потому что всегда неизбежно приходят новые версии как самих sfx, так и вообще операционные системы или даже архитектуры самого железа. Вон, никто в "широких массах" не ожидал на фоне "x86 vs arm" никаких е2к или лонгшан (надеюсь, нигде сейчас ошибку не сделал в названии). А там и "паттерны" другие, и код вообще иной. Да чего уж говорить, даже привычное виндам "расширение имени файла" на не-виндовых системах может быть запросто проигнорировано, особенно в случае SFX.
Так что да, чтение с конца для zip не только соответствует спекам, но и логике в целом.

Всего записей: 17956 | Зарегистр. 04-11-2010 | Отправлено: 14:35 18-11-2024
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
uShell

Цитата:
как и PDF

Будет ли в таком случае файл открываться в браузере до того как полностью скачался? Речь идет о файлах c linearization.

Всего записей: 7740 | Зарегистр. 08-09-2001 | Отправлено: 16:36 18-11-2024
EugeneRoshal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
destiny_child

Цитата:
Т.е. любая последовательность байт в начале рассматривается как ZIP SFX?

Да.

Цитата:
Без малейшей попытки даже как-то вычленить какие-то характерные паттерны,
которые обязаны существовать для ZIP SFX?

Как уже отметил insorg, в силу многообразия архиваторов, операционных систем и версий вышеперечисленного, такие паттерны отсутствуют.

Всего записей: 2388 | Зарегистр. 29-04-2013 | Отправлено: 16:46 18-11-2024
lelik007



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
insorg

Цитата:
Цель - иметь возможность узнать  о том, что "что-то не так" и помимо основных данных есть что-то ещё. Тем более раз оно пропускается (по любым причинам, будь то корректный sfx-заголовок или что-то ещё), значит сам факт наличия таких "хвостов" определяется, а потому и отдельную функцию городить не потребуется. Просто где-то отобразить статус, а не продолжать молча работать.  

Что творится, а у Игоря наоборот просят, что бы он отключил сообщение о лишних данных, говорят Winrar же ничего не сообщает, наверное, так и правильнее, почитай отсель и ниже:
https://sourceforge.net/p/sevenzip/discussion/45797/thread/f162d68dcd/?page=1#7f74
3 раза это видел, кстати.

Всего записей: 3102 | Зарегистр. 13-10-2006 | Отправлено: 16:47 18-11-2024 | Исправлено: lelik007, 17:08 18-11-2024
EugeneRoshal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
uShell

Цитата:
Ну и в завершение укажу на недоработку в структуре ZIP-архива. Что если в комментарии к архиву, который расположен после end of central directory record, будет присутствовать корректный ZIP-архив (с правильно посчитанными смещениями)?

Да, было бы полезно в начале архива хранить смещение до central directory.

Цитата:
Это явное отступление от документации:

В документации взаимоотношения с SFX модулем не указаны. Я считаю создание архива с помощью:
copy/b zip.sfx + arc.zip arc.exe
допустимым подходом.
 
insorg

Цитата:
но какой-то индикатор наличия "лишних байтов" до собственно самих байтов архива

Реализуемо, но потребует некоторых изменений внутренней архитектуры WinRAR. Сейчас WinRAR определяет размер SFX для показа в Info при открытии архива по позиции первой сигнатуры, а пришлось бы при закрытии по наименьшей позиции local header. Пока я не видел, чтобы это кому-то было нужно. Потребуется, буду смотреть.

Цитата:
и после него.

Тут каждый архивный формат надо изучать в отдельности - есть ли у него признак конца архива.
 
Кстати, в SFX архивах байты после него это в том числе электронная подпись - штатная ситуация.

Всего записей: 2388 | Зарегистр. 29-04-2013 | Отправлено: 17:10 18-11-2024
insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lelik007

Цитата:
у Игоря наоборот просят, что бы он отключил сообщение о лишних данных

Если подобные сообщения пугают ламеров, не умеющих читать, то это сугубо их проблемы. Лично мне такие сообщения крайне полезны, т.к. позволяют увидеть имеющиеся нестандартности или проблемы у файла.

Цитата:
почитай отсель и ниже

Всё он правильно ответил. Сообщение полезное. А если кто делает кривые архивы, так пусть фиксят свой софт, дабы соответствовать спекам. Поддерживаю целиком и полностью.

Всего записей: 17956 | Зарегистр. 04-11-2010 | Отправлено: 17:53 18-11-2024
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EugeneRoshal, а этот файл с точки зрения WinRAR допустимый подход?
https://github.com/yt-dlp/yt-dlp/releases/download/2024.11.18/yt-dlp

Всего записей: 7740 | Зарегистр. 08-09-2001 | Отправлено: 17:57 18-11-2024
uShell

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Будет ли в таком случае файл открываться в браузере до того как полностью скачался? Речь идет о файлах c linearization.

Открытие с начала и возможность инкрементных обновлений в общем случае друг другу противоречат. Что PDF, что ZIP можно читать с начала (в режиме восстановления), но в этом случае надо быть готовым к ситуации, что прочитанное придётся выкинуть или изменить.
 
Сейчас, насколько я знаю, разнообразные "качалки" решают этот вопрос произвольным доступом: отправляют запрос размера, скачивают последние примерно 64К и получают оглавление архива без скачивания его целиком. Но если сервер отдаёт файл только с начала, будет облом. В некоторых случаях можно отступить от стандарта и расположить central directory в самом начале архива - тогда получится просматривать архив сразу же.

Всего записей: 1099 | Зарегистр. 12-06-2019 | Отправлено: 18:02 18-11-2024
insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EugeneRoshal

Цитата:
 copy/b zip.sfx + arc.zip arc.exe  

Так в общем-то при уже готовом sfx модуле (если не надо всякие опции типа ковыряния иконок, параметров запуска и т.п.) оно так и делается. Сам по такому принципу собираю sfxы и всякие кастомные установки для своих нужд. Это бывает удобнее, чем каждый раз дрыгать пути к архиваторам.

Цитата:
Пока я не видел, чтобы это кому-то было нужно. Потребуется, буду смотреть.  

Как оказалось, это таки весьма полезно и нужно.
Разве что определиться с "количеством нужности", дабы затрачиваемое время на внедрение фичи было оправдано, и с собственно видом как и где это всё вообще должно показываться.
С одной стороны, это даже для консольной полезно. С другой, в реальности очень редко когда там читаешь вот прям всё подряд. Особенно когда настроен вывод всего списка содержимого. С другой, даже в гуи версии не особо представляю, где бы это было заметно и полезно. Вроде как и в инфе об архивах можно было бы. Но туда специально ходить каждый раз - не шибко удобно. Если какой значок отображать (где-нибудь в статусной строке, например), то это ещё обеспечить его понятность. Или же просто во время распаковки при натыкании на вот такие несоответствия что-то писать...
В общем, сама задумка на самом деле интересная.

Цитата:
каждый архивный формат надо изучать в отдельности  

Привычной пары zip и rar было бы достаточно, наверное. По вкусу ещё - 7z или cab, как тоже встречающиеся. А остальные... Даже не знаю. Либо что-то слишком редкое, либо разбор головы и хвоста действительно превратится в такой гемор, что оно становится слишком сложным.

Цитата:
 Кстати, в SFX архивах байты после него это в том числе электронная подпись - штатная ситуация.  

В принципе да, наверное. В таких не ковырялся. Но предположу, что если сам sfx модуль как-то опознан корректно, то наличие эп тоже должно как-то опознаваться?
Или там такой же разброд и шатание, как у sfx с разными ОС, архитектурами и прочим?

Всего записей: 17956 | Зарегистр. 04-11-2010 | Отправлено: 18:03 18-11-2024
EugeneRoshal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los

Цитата:
а этот файл с точки зрения WinRAR допустимый подход?

Я внутрь не смотрел, но распаковывает без ошибок.
 
insorg

Цитата:
В принципе да, наверное. В таких не ковырялся. Но предположу, что если сам sfx модуль как-то опознан корректно, то наличие эп тоже должно как-то опознаваться?

В идеале там надо опознавать не наличие подписи, а признак конца архива. Тогда все что дальше - игнорируется. В RAR5 такой признак есть. В прочих форматах - где как.

Всего записей: 2388 | Зарегистр. 29-04-2013 | Отправлено: 18:10 18-11-2024 | Исправлено: EugeneRoshal, 18:10 18-11-2024
uShell

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Я считаю создание архива с помощью:
copy/b zip.sfx + arc.zip arc.exe
допустимым подходом.

А от чего тогда отсчитывается смещение central directory? От первого в файле заголовка "PK\003\004"? Тут возможны проблемы, если эта последовательность байт встретится в теле EXE.

Всего записей: 1099 | Зарегистр. 12-06-2019 | Отправлено: 18:13 18-11-2024
EugeneRoshal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
uShell

Цитата:
А от чего тогда отсчитывается смещение central directory?

Мы знаем реальное смещение end of central directory. А на основании содержащихся в ней данных можем посчитать ее изначально планируемое смещение. Разность этих двух значений можно использовать для коррекции.  
 
Кстати, эту же разность можно использовать как размер SFX модуля. Тогда не нужно искать наименьшую позицию local header, и код получается проще того, что я упоминал раньше. Я сейчас это сделал и выложил новую английскую beta 1. Она должна показывать размер первого ZIP архива в склейке из двух в поле "SFX module size" в "Info".

Всего записей: 2388 | Зарегистр. 29-04-2013 | Отправлено: 21:17 18-11-2024
insorg



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EugeneRoshal

Цитата:
В RAR5 такой признак есть. В прочих форматах - где как

Тогда, дабы не изобретать сову с глобусом внутри можно вообще ограничиться только своим же RAR. Всё равно остальные форматы - это фишка чисто гуи версии.
 
Добавлено:

Цитата:
Она должна показывать размер первого ZIP архива в склейке из двух в поле "SFX module size" в "Info".

Т.е. в таком случае всё до последнего архива будем считать как SFX, я правильно понимаю?
А в граничных случаях, когда склеены архивы большей размерности (скажем, три склейки: 1 ГБ + 500 МБ + 200 МБ) эта функция как отработает?

Всего записей: 17956 | Зарегистр. 04-11-2010 | Отправлено: 21:21 18-11-2024
uShell

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Мы знаем реальное смещение end of central directory.

Я как раз и хочу узнать, откуда оно берётся в случае архива, сделанного не WinRAR. Если смещение из end of central directory указывает "в космос", central directory ищется по сигнатуре в окрестностях этого смещения? По всему файлу? А если их две рядом (ZIP внутри ZIP или инкрементальное обновление)?
 
Если Вы считаете, что дискуссия затягивается, можно перейти в ЛС, или Вы можете не отвечать. Я просто хочу обозначить проблему, которая в небольшом проценте случаев может привести к неправильной работе WinRAR.

Всего записей: 1099 | Зарегистр. 12-06-2019 | Отправлено: 21:34 18-11-2024
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126

Компьютерный форум Ru.Board » Компьютеры » Программы » WinRAR (часть 5)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru