Observer — распаковка файлов из различных контейнеров

Здесь можно обсудить ваш любимый плагин.
Ariman
Posts: 1351
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 15 times
Been thanked: 50 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Ariman »

Тема для обсуждения плагина Observer.
Плагин предназначен только для распаковки файлов. Запаковка/редактирование архивов не планируется.

Хотелки/баги:

Известные проблемы:

Планируемые новые модули:

Если "ничего не работает", то прежде чем писать сюда:


Сторонние модули:
  • Dir — поддержка вывода команд dir и ls в качестве виртуального архива.
  • Inno Setup — поддержка файлов Inno Setup (сделан на основе innounp).
  • cab — распаковка нестандартных .cab архивов (Windows Update и др.)
Last edited by Ariman on Wed 04 May, 2022 14:36, edited 7 times in total.
User avatar
HaRT
Moderator
Posts: 10862
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Observer — распаковка файлов из различных контейнеров

Post by HaRT »

Latest post of the previous page:

Ariman wrote:Вряд ли эти данные будут постоянные для каждого исходника. Вполне вероятно, что разные модули имеют разные версии одного и того же исходника (будет актуально для сорцов из рантайма, они скорее всего будут отличаться от файлов в текущем SDK, с которым личный код собран). Тогда уже имеет смысл заводить упомянутую секцию [Modules] и там писать актуальные чексуммы и id для каждого модуля.
Вот тут выявилась существенная разница в понятиях. Когда я говорю, что в модуле используется такой-то исходник, я подразумеваю совокупность полного пути и контрольной суммы. Соответственно, в секции [Modules] я ожидаю увидеть все те и только те модули, которые упоминают в точности эту версию этого исходного файла.
Исходники же с разными контрольными суммами я бы хотел видеть отдельными элементами панели, пусть даже и по одинаковому пути.
Если же склеивать все исходники с одним путём в один элемент панели, то разбираться, в каких модулях использована действительно одинаковая версия, а в каких разная, становится несколько муторно.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Ariman
Posts: 1351
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 15 times
Been thanked: 50 times
Contact:

Re: Observer — распаковка файлов из различных контейнеров

Post by Ariman »

HaRT wrote:Исходники же с разными контрольными суммами я бы хотел видеть отдельными элементами панели, пусть даже и по одинаковому пути.
А как их в таком случае называть, если имя файла будет одинаковое?
User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Re: Observer — распаковка файлов из различных контейнеров

Post by Centaur »

HaRT wrote:Centaur
Не знаете ли, строка “This is a multi-part message in MIME format.” не из RFC ли? Подлежит ли она локализации?
Этот вопрос не имеет смысла. По RFC всё, что до первой пустой строки, является заголовками и должно следовать синтаксису заголовков. Эта строка не соответствует. Согласно синтаксису, описанному в RFC5322, такая строка не является заголовком. Но она и не может считаться началом тела, потому что между всеми заголовками и телом должна быть пустая строка. Таким образом, формально весь файл не является сообщением RFC5322.

Следуя генеральному принципу «либеральности в принимаемом и консервативности в производимом», логично игнорировать эту строчку при обработке и считать, что за ней могут следовать ещё заголовки.

Если же мы считаем эту строку частью тела (а конкрентее, преамбулой), то, конечно же, на неё не накладывается никаких ограничений (кроме общего требования, что тело состоит из строк (длиной не более 998 символов us-ascii 0x1..0x9, 0xB, 0xC, 0xE..0x7F), разделённых переводами строк CRLF (0xD 0xA)). Потребители должны игнорировать преамбулу; производители могут писать туда что-нибудь человекопонятное для тех, чья почточиталка (напоминаю, формат RFC822 исходно почтовый) ещё не умеет MIME.

Как бы то ни было, есть два пути: либо игнорировать строчку (независимо от того, является ли она кривым заголовком или началом кривого тела), либо отказываться обрабатывать всё сообщение.
User avatar
HaRT
Moderator
Posts: 10862
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Observer — распаковка файлов из различных контейнеров

Post by HaRT »

Ariman wrote:
HaRT wrote:Исходники же с разными контрольными суммами я бы хотел видеть отдельными элементами панели, пусть даже и по одинаковому пути.
А как их в таком случае называть, если имя файла будет одинаковое?
Одинаково и называть; вон ProcList сколько лет так делает и ничего, до сих пор жив. А вот внутри, под капотом, как раз можно использовать любезно предоставляемый UniqueId.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Ariman
Posts: 1351
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 15 times
Been thanked: 50 times
Contact:

Re: Observer — распаковка файлов из различных контейнеров

Post by Ariman »

HaRT wrote:А нельзя ли в коде завести перечень текстов body, перед которыми может не быть пустой строки? На настоящий момент включить в этот список только “This is a multi-part message in MIME format.” — тогда и практически значимый случай будет покрыт, и ложных срабатываний будет минимум.
Это не очень согласуется с логикой кода библиотеки. Не хочется костыли лепить
HaRT wrote:Одинаково и называть; вон ProcList сколько лет так делает и ничего, до сих пор жив. А вот внутри, под капотом, как раз можно использовать любезно предоставляемый UniqueId.
. Теоретически можно попробовать. Одинаковые имена обычно создают проблему, если файлы планируется распаковывать пачками. Но, судя по всему, это не тот случай.
User avatar
HaRT
Moderator
Posts: 10862
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Observer — распаковка файлов из различных контейнеров

Post by HaRT »

Ariman wrote:Не хочется костыли лепить
Не критично. В конце концов, эти MHT, как выяснилось, успешно открываются достаточно свежим MailView.
Ariman wrote:Одинаковые имена обычно создают проблему, если файлы планируется распаковывать пачками.
А может ли плагин при копировании со своей панели управлять логикой обработки нештатных ситуаций (в частности, переименовывать при конфликтах имён)?
Фар есть инструмент, а не нянька. © 2009 DrKnS
Ariman
Posts: 1351
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 15 times
Been thanked: 50 times
Contact:

Re: Observer — распаковка файлов из различных контейнеров

Post by Ariman »

HaRT wrote:Не критично. В конце концов, эти MHT, как выяснилось, успешно открываются достаточно свежим MailView.
Ну смотрите сами. Моё предложение по поводу опции, которая будет разрешать отсутствие пустой строки между заголовком и телом, в силе. Я так подозреваю, что в MailView этот вариант разрешён по умолчанию, поэтому и открывает файлы. Вряд ли там список разрешённых строк для этого забит.
HaRT wrote:А может ли плагин при копировании со своей панели управлять логикой обработки нештатных ситуаций (в частности, переименовывать при конфликтах имён)?
Он этим занимается на стадии чтения списка файлов. К одинаковым имена циферки добавляются, чтобы файлы различать.
2useven10
Posts: 5229
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 315 times

Re: Observer — распаковка файлов из различных контейнеров

Post by 2useven10 »

отвалился при открытии MacOS.vmdk
имеет смысл давать детали, или просто не поддерживается?
User avatar
HaRT
Moderator
Posts: 10862
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Observer — распаковка файлов из различных контейнеров

Post by HaRT »

Ariman wrote:Моё предложение по поводу опции, которая будет разрешать отсутствие пустой строки между заголовком и телом, в силе.
А как тогда при включенной этой гипотетической опции будет определяться, затесалась ли посередь заголовка левая строка или это заголовок закончился?
Ariman wrote:К одинаковым имена циферки добавляются, чтобы файлы различать.
Означает ли это, что и на панели имена файлов буду с циферками? Это было бы очень неудобно по двум причинам: (1) непонятно, где циферки исходно, а где от плагина; (2) неудобно копировать исходное имя файла.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Ariman
Posts: 1351
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 15 times
Been thanked: 50 times
Contact:

Re: Observer — распаковка файлов из различных контейнеров

Post by Ariman »

2useven10 wrote:отвалился при открытии MacOS.vmdk
имеет смысл давать детали, или просто не поддерживается?
Если упало, то конечно имеет. Насчёт поддержки, вроде в DiskUtils добавили поддержку маковских разделов, но у меня не получилось заставить её работать. Пытался на dmg инсталяхе MacOS, сам контейнер распарсило, а файловую систему не распознало. Глубже не ковырял.
HaRT wrote:А как тогда при включенной этой гипотетической опции будет определяться, затесалась ли посередь заголовка левая строка или это заголовок закончился?
Посередине левые строки не могут быть. Логика там такая: первая строка не в формате заголовка считается началом тела. Это оригинальная логика GMime-а, которую я запатчил. Там даже в комментарии написано, что для поддержки кривых программ, которые заголовок и тело не разделяют строкой :) Я подозреваю, что в таком ключе большинство программ парсит.
HaRT wrote:Означает ли это, что и на панели имена файлов буду с циферками? Это было бы очень неудобно по двум причинам: (1) непонятно, где циферки исходно, а где от плагина; (2) неудобно копировать исходное имя файла.
Да, на панели будут с циферками. Собственно, так все модули сейчас и работают. Можно легко найти пример в NSIS и MSI файлах. Где циферки плагина понять не сложно, номер отделяется запятой от имени файла, и в природе такое редко встречается. А вот имена копировать будет неудобно, да.
User avatar
HaRT
Moderator
Posts: 10862
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Observer — распаковка файлов из различных контейнеров

Post by HaRT »

Ariman wrote:Логика там такая: первая строка не в формате заголовка считается началом тела. Это оригинальная логика GMime-а, которую я запатчил. Там даже в комментарии написано, что для поддержки кривых программ, которые заголовок и тело не разделяют строкой
Я не против такой опции, но запросто обойдусь пока и без неё. Предлагаю записать её в список хотелок, чтобы не забылось.
Ariman wrote:Да, на панели будут с циферками. Собственно, так все модули сейчас и работают. Можно легко найти пример в NSIS и MSI файлах.
Насколько принципиально это поведение? Я-то предпочёл бы, чтобы хотя бы опционально исходно одинаковые имена оставались таковыми и на панели плагина. Хотя ещё надо посмотреть, насколько часты будут конфликты имён.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Observer — распаковка файлов из различных контейнеров

Post by John Doe »

HaRT wrote:Я-то предпочёл бы, чтобы хотя бы опционально исходно одинаковые имена оставались таковыми и на панели плагина.
Я тоже.
HaRT wrote:Хотя ещё надо посмотреть, насколько часты будут конфликты имён.
Будут часты, это факт.
Но что если эти конфликты решать на этапе распаковки?
Ariman
Posts: 1351
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 15 times
Been thanked: 50 times
Contact:

Re: Observer — распаковка файлов из различных контейнеров

Post by Ariman »

HaRT wrote:Я-то предпочёл бы, чтобы хотя бы опционально исходно одинаковые имена оставались таковыми и на панели плагина.
John Doe wrote:Я тоже.
Добавил хотелку.
HaRT wrote:Предлагаю записать её в список хотелок, чтобы не забылось.
Записал.
John Doe wrote:Но что если эти конфликты решать на этапе распаковки?
Тут разве что можно предложить добавить в диалог перезаписи новые кнопки [Rename] и [Rename All]. Если делать автоматическую переименовку, то тут удовлетворить все случаи будет сложно.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Observer — распаковка файлов из различных контейнеров

Post by John Doe »

Ariman wrote:Если делать автоматическую переименовку, то тут удовлетворить все случаи будет сложно.
Если файл в папке уже был до начала распаковки, то автоматически переименовывать вряд ли стоит.
Но наверно можно отследить это?

Впрочем, это слишком мудро, не стоит.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

Re: Observer — распаковка файлов из различных контейнеров

Post by John Doe »

John Doe wrote:
HaRT wrote:Я-то предпочёл бы, чтобы хотя бы опционально исходно одинаковые имена оставались таковыми и на панели плагина.
Я тоже.
Но с другой стороны, то что эти файлы сразу "помечены" цифрами, тоже полезно: обращает внимание.
User avatar
HaRT
Moderator
Posts: 10862
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Observer — распаковка файлов из различных контейнеров

Post by HaRT »

John Doe wrote:то что эти файлы сразу "помечены" цифрами, тоже полезно: обращает внимание.
В таком случае лучше бы какой-нибудь менее распространённый символ, нежели запятая. Эх, жаль, что двоеточие или прямая косая черта неизбежно вызовут проблемы при распаковке…
Впрочем, внимание я бы лучше привлекал другими признаками: например, Number of hard links.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

Return to “Обсуждение плагинов”