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

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

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

Post by Ariman » Mon 31 Aug, 2009 11:29

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

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

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

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

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


Сторонние модули:
Dir — поддержка вывода команд dir и ls в качестве виртуального архива. (на версии 1.10 работать не будет в связи с изменением API модулей)
Inno Setup - поддержка файлов Inno Setup (сделан на основе innounp).

Yegor
Posts: 1020
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 8 times
Been thanked: 16 times

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

Post by Yegor » Tue 10 Sep, 2019 22:35

Latest post of the previous page:

Здесь viewtopic.php?f=39&t=9765 отмеченно, что Observer нужен v1.11
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин

pukan1
Posts: 26
Joined: Tue 27 Mar, 2007 15:30
Has thanked: 1 time

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

Post by pukan1 » Tue 10 Sep, 2019 23:00

Yegor wrote:
Tue 10 Sep, 2019 22:25
Скорее всего работает InnoUnp только с Observer v1.11, в 1.12 поменялся АПИ (если конечно назад не вернули или не поменяли еще раз).
Спасибо за предположение, но хотелось бы добиться работы InnoUnp именно в вышеуказанной конфигурации.

Yegor
Posts: 1020
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 8 times
Been thanked: 16 times

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

Post by Yegor » Tue 10 Sep, 2019 23:07

Для этого нужно InnoUnp немножко доделать (изменений АПИ немного). Просто "пересобрать" не получится.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин

skipik
Posts: 144
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 17 times
Been thanked: 13 times

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

Post by skipik » Tue 10 Sep, 2019 23:42

Всё верно. Модуль с новой версией не работает.
viewtopic.php?p=153123#p153123
Тут я спрашивал автора, он ответил, что обновит тогда, когда Observer 1.12 зафиналят.

pepak
Posts: 420
Joined: Sun 13 Jul, 2008 11:18
Has thanked: 6 times
Been thanked: 22 times

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

Post by pepak » Wed 11 Sep, 2019 20:48

When Observer 1.12 is released, I will of course update the InnoUnp submodule to the new API. But I won't be doing that for development versions.

SEt
Posts: 460
Joined: Mon 21 Mar, 2005 10:22
Location: Питер
Been thanked: 19 times

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

Post by SEt » Wed 25 Sep, 2019 08:34

Новый модуль для Observer 1.11, позволяющий нормально распаковывать .cab архивы, в том числе от Windows Update. Показывает настоящие файлы, а не полуфабрикаты "0", "1", "2", "_manifest_.cix.xml", как все остальные архиваторы.

observer_user.ini положить рядом с 4Observer.dll; объединить содержимое, если такой файл уже существует.
cab.so положить в modules.
cab.7z
(2.44 KiB) Downloaded 53 times

SEt
Posts: 460
Joined: Mon 21 Mar, 2005 10:22
Location: Питер
Been thanked: 19 times

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

Post by SEt » Thu 26 Sep, 2019 17:27

Мысли по поводу API модулей, раз уж версия 1.12 в процессе и предполагается всё равно ломать совместимость:

1) Комбинация OpenStorage/PrepareFiles, видимо, задумывалась как OpenStorage – распознавание "архива", PrepareFiles – открытие. (Раз уж плагин любит открывать файлы как OpenStorage=>CloseStorage=>OpenStorage=>PrepareFiles=>...) Но идея не очень работает, так как если OpenStorage сказал, что файл подходит, а PrepareFiles вернул FALSE, то пользователю выдаётся сообщение об ошибке и файл не передаётся дальше в другие плагины Far'а. Так что приходится всё открытие делать в OpenStorage.

2) В OpenStorage полезно было бы дать небольшой кусок начала файла, чтобы модуль мог легко и быстро проверить тип файла по сигнатуре, если она есть для данного формата.

3) Полезно было бы иметь команду "извлечь всё" в какой-то форме, так как нередко извлечение всего за один шаг значительно быстрее извлечения по одному файлу (при непрерывном сжатии). Например, модуль имеет необязательный экспорт ExtractAll. Или так: модуль в LoadSubModule ставит флаг, что имеет режим "извлечь всё", и в таком случае ExtractItem вызывается только раз с флагом "извлечь всё" и путём каталога для извлечения.

Ariman
Posts: 1248
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 28 times
Contact:

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

Post by Ariman » Sat 28 Sep, 2019 08:16

SEt wrote:
Thu 26 Sep, 2019 17:27
Мысли по поводу API модулей, раз уж версия 1.12 в процессе и предполагается всё равно ломать совместимость:
1) Комбинация задумывалась для поддержки AnalizeW. В OpenStorage файл открываем, но масимально быстро и без UI, чтобы передать дальше файл, если нам не подходит. А всё остальное делается уже в PrepareFiles после OpenW, вокруг вызова которой показывается сообщение, чтобы не создавалось впечатление, что процесс завис. PrepareFiles может вернуть FALSE, если архив битый, и мы сообщаем об этом пользователю, а не молча отправляем файлы дальше.
2) Это уже реализовано.
3) Фар не сообщает, всё надо извлекать или нет, приезжает просто список. И добавлять код, который будет проверять, а всё ли это или нет, я не вижу смысле. Если модуль извлекает из solid архивов, то он должен уметь продолжить с предыдущей позиции извлечение.

SEt
Posts: 460
Joined: Mon 21 Mar, 2005 10:22
Location: Питер
Been thanked: 19 times

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

Post by SEt » Sat 28 Sep, 2019 14:46

1) Хотелось бы иметь возможность именно молча отправлять дальше в PrepareFiles. (Если архив не битый, но мы его не поддерживаем и узнали об этом позже OpenStorage.)
3) Shift+F2 по архиву сообщает, что надо извлечь всё, и хотелось бы этот флаг увидеть.

Ariman
Posts: 1248
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 28 times
Contact:

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

Post by Ariman » Sat 28 Sep, 2019 16:31

Изначально PrepareFiles вообще не было в природе. Это добавленный костыль, чтобы Analize не тупил. Многие модули его вообще не используют. По логике, если уж туда добрались, то поздняк метаться.
Есть какой-нибудь живой use-case для таких изменений? Я как бы не против изменений, но переделывать апи по принципу "чтоб было, вдруг пригодиться" желания нет. Если есть применение в живом модуле, то нет проблем, обсудим и поменяем. Если это просто теоретические изыскания, то могу записать в пожелания, но когда руки дойдут до реализации не могу сказать.

SEt
Posts: 460
Joined: Mon 21 Mar, 2005 10:22
Location: Питер
Been thanked: 19 times

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

Post by SEt » Sun 29 Sep, 2019 01:57

Use-case: вышеприведённый модуль cab.so. Отваливаться с ошибкой не передавая файл дальше – недопустимо когда есть другие плагины умеющие тот же формат (arclite). Поэтому пришлось всё запихать в OpenStorage, хоть оно и вызывается 2 раза (и, соответственно, в 2 раза медленнее, чем могло бы быть).

Про "извлечь всё" также нет острой необходимости. Мне просто вспомнился попавшийся некоторое время назад инсталлятор (не помню, кто это был), где извлечение всего через Observer работало настолько медленно, что пришлось это прервать и запустить отдельный распаковщик с командой "распаковать всё", что отработало гораздо быстрее. С cab.so дела обстоят так: случайно взятый .cab на 100МБ из C:\Windows\Installer через текущий интерфейс Observer'а распаковывается за ~20сек, а через "извлечь всё" – за ~5сек.

Edit: Если бы извлечение вызывалось не по одному файлу, а всем списком, то, возможно, и "извлечь всё" было бы быстрым, и частичное извлечение нескольких файлов ускорилось бы. С точки зрения cab.so это не отличается от "извлечь всё", а вот про другие модули не могу сказать.
Last edited by SEt on Sun 29 Sep, 2019 02:05, edited 1 time in total.

Ariman
Posts: 1248
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 28 times
Contact:

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

Post by Ariman » Thu 03 Oct, 2019 11:01

SEt wrote:
Sun 29 Sep, 2019 01:57
Отваливаться с ошибкой не передавая файл дальше – недопустимо когда есть другие плагины умеющие тот же формат (arclite).
Т.е. модуль поддерживает не все файлы? И понять это может только на середине процесса?
SEt wrote:
Sun 29 Sep, 2019 01:57
Мне просто вспомнился попавшийся некоторое время назад инсталлятор (не помню, кто это был), где извлечение всего через Observer работало настолько медленно, что пришлось это прервать и запустить отдельный распаковщик с командой "распаковать всё", что отработало гораздо быстрее.
Это для InnoSetup-а который? На него обычно такие жалобы.

User avatar
HaRT
Moderator
Posts: 8947
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 88 times
Been thanked: 155 times

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

Post by HaRT » Thu 03 Oct, 2019 11:14

Ariman wrote:
Thu 03 Oct, 2019 11:01
Это для InnoSetup-а который? На него обычно такие жалобы.
Я в MSI нередко сталкиваюсь с субъективно неоправданно долгой распаковкой. Правда, строго обосновать, что скопом будет быстрее, не могу.
Фар есть инструмент, а не нянька. © 2009 DrKnS

SEt
Posts: 460
Joined: Mon 21 Mar, 2005 10:22
Location: Питер
Been thanked: 19 times

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

Post by SEt » Thu 03 Oct, 2019 15:50

Ariman wrote:
Thu 03 Oct, 2019 11:01
Т.е. модуль поддерживает не все файлы? И понять это может только на середине процесса?
Модуль просто стыкует Observer с внешним интерфейсом, так что что и когда может пойти не так от него не особо зависит. Но если что-то пойдёт не так, то мне хотелось бы, чтобы он тихо отвалился и передал файл дальше. В крайнем случае, громко отвалился, но всё равно передал файл дальше.
Ariman wrote:
Thu 03 Oct, 2019 11:01
Это для InnoSetup-а который? На него обычно такие жалобы.
Да, наверное, это был именно InnoSetup.

ivank
Posts: 135
Joined: Fri 08 Aug, 2008 16:14
Been thanked: 1 time
Contact:

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

Post by ivank » Sat 12 Oct, 2019 08:51

Ariman wrote:
Mon 02 Oct, 2017 09:03
Файл ... от юникодной версии nsis-а, а их текущий модуль не поддерживает.
Столкнулся с невозможноостью распаковать 64-битный nsis: https://sourceforge.net/projects/avidem ... mux/2.7.4/
avidemux_2.7.4_win32.exe - распаковывается нормально, Avidemux_2.7.5 VC++ 64bits .exe - не распаковывается.
Far30b5465.x64, Observer_x64_1.11.2, msvcp100.dll и msvcr100.dll - x64 10.0.30319.1.
7z тоже не может x64-версию распаковать.
Я правильно понимаю, что nsis-x64 пока не поддерживается? Есть ли планы по добавлению такой поддержки?

Ariman
Posts: 1248
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 28 times
Contact:

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

Post by Ariman » Sun 13 Oct, 2019 14:01

ivank wrote:
Sat 12 Oct, 2019 08:51
Я правильно понимаю, что nsis-x64 пока не поддерживается? Есть ли планы по добавлению такой поддержки?
Observer использует код из 7zip-а, поэтому список поддерживаемых версий будет одинаковым. Если в 7zip чего добавят, то и тут появится. Планов самому ковыряться в формате пока нет.

Pasha_ZZZ
Posts: 90
Joined: Mon 12 Jun, 2006 14:58
Contact:

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

Post by Pasha_ZZZ » Thu 17 Oct, 2019 06:07

ivank wrote:
Sat 12 Oct, 2019 08:51
Я правильно понимаю, что nsis-x64 пока не поддерживается?
Неправильно. Нет там никакого NSIS x64, как и NSIS в общем.

Code: Select all

Qt Installer  v2.0.0 - 3.0.x - 2018.12.11 - www.qt.io  - stub : Microsoft Visual C++ v.12 - 2013 ( E8 MZ-PE ) www.microsoft.com - no sec. CAB/7z/Zip [ Win Vista ] , 
Overlay :  -> .rcc file - Qt Resources ( Binary Data ) - http://qt-project.org

Post Reply

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