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

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

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

Post by Ariman »

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

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

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

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

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


Сторонние модули:
  • Dir — поддержка вывода команд dir и ls в качестве виртуального архива. На версии 1.10 (и новее) работать не будет в связи с изменением API модулей.
  • Inno Setup — поддержка файлов Inno Setup (сделан на основе innounp).
  • cab — распаковка нестандартных .cab архивов (Windows Update и др.)
Скачать последнюю сборку
Last edited by Ariman on Sun 12 Apr, 2020 07:57, edited 3 times in total.
Ariman
Posts: 1291
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 41 times
Contact:

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

Post by Ariman »

Latest post of the previous page:

Dzirt2005 wrote:отловить его очень легко. Запускаешь Far, переименовываешь каталог %SystemRoot%\Microsoft.NET например в Microsoft.NET-- и пытаешься зайти в любой *.iso например.
Не получилось. Я попробовал на на виртуалке (winXP, far 2.0.1807, x86). И до этого пробовал запускать когда .NET вообще не установлен. В обоих случаях модуль молча не загрузился, как и должно быть. Никаких падений не зафиксировано.
Dzirt2005 wrote:А по хорошему этот модуль надо бы переписать на обычный C++, он же единственный кто .NET использует? Там по тексту вообще непонятно зачем его было не .NET'е писать. Может конечно невнимательно посмотрел, но вроде как нет там ничего, что нельзя было бы сделать на обычном C++
Затем, что использует он библиотеку, написанную на c# (DiscUtils). И переписывать 4 мегабайта сорцов на с++ желания нет вообще никакого :).
Dzirt2005 wrote:И еще добавлю. vdisk.so скомпилирован под .NET 4.0, поэтому если его нет на компьютере, то и упали... Может его хотя бы под .NET 2.0 собрать?
Да, согласен. Я собирался под 3.5 делать, но ошибся с опциями.
Dzirt2005
Posts: 298
Joined: Fri 29 Feb, 2008 12:11
Been thanked: 3 times

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

Post by Dzirt2005 »

Ariman wrote:
Dzirt2005 wrote:отловить его очень легко. Запускаешь Far, переименовываешь каталог %SystemRoot%\Microsoft.NET например в Microsoft.NET-- и пытаешься зайти в любой *.iso например.
Не получилось. Я попробовал на на виртуалке (winXP, far 2.0.1807, x86). И до этого пробовал запускать когда .NET вообще не установлен. В обоих случаях модуль молча не загрузился, как и должно быть. Никаких падений не зафиксировано.
Возможно, дело в ключе реестра:

Code: Select all

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion]
"EnableLog"=dword:00000001
Если его поставить, то будет падать. Exception при этом возникает такой:
System.BadImageFormatException was unhandled
Message: Невозможно загрузить файл или сборку "vdisk.so" или один из зависимых от них компонентов. Сборка создана в более поздней версии среды выполнения чем текущая, и не может быть загружена.
В каком конкретно месте он возникает я быстро не нашел, но скорее всего где-то в месте, где грузится vdisk.so.
Dzirt2005
Posts: 298
Joined: Fri 29 Feb, 2008 12:11
Been thanked: 3 times

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

Post by Dzirt2005 »

Ariman wrote:
Dzirt2005 wrote:И еще добавлю. vdisk.so скомпилирован под .NET 4.0, поэтому если его нет на компьютере, то и упали... Может его хотя бы под .NET 2.0 собрать?
Да, согласен. Я собирался под 3.5 делать, но ошибся с опциями.
Вполне можно делать под .NET 2.0, DiskUtil.dll сделана под 2.0. Я проверил собрав в VS2008 модуль vdisk.so. Интересно, что VS2008 позволяет выбрать Target Framework (в этом месте у него ComboBox с возможностью выбора), а в VS2010 там просто текстовая надпись Target Framework 4.0 без возможности выбора.
DiRTy_GaRRy
Posts: 705
Joined: Tue 05 Apr, 2005 09:26
Been thanked: 3 times
Contact:

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

Post by DiRTy_GaRRy »

Dzirt2005 wrote:а в VS2010 там просто текстовая надпись Target Framework 4.0 без возможности выбора.
Париш. Всё там есть.
Ы?
Dzirt2005
Posts: 298
Joined: Fri 29 Feb, 2008 12:11
Been thanked: 3 times

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

Post by Dzirt2005 »

DiRTy_GaRRy wrote:
Dzirt2005 wrote:а в VS2010 там просто текстовая надпись Target Framework 4.0 без возможности выбора.
Париш. Всё там есть.
Слушай, но ведь я писал о свойствах проекта vdisk.so:

Зачем же ты приводишь свойства чисто .NET'ского проекта DiskUtils.dll? Нехорошо, да? :wink:
DiRTy_GaRRy
Posts: 705
Joined: Tue 05 Apr, 2005 09:26
Been thanked: 3 times
Contact:

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

Post by DiRTy_GaRRy »

Dzirt2005, моя твоя не понял. :) А для С++ CLR проектов target framework через UI, к сожалению, менять нельзя. Нужно ручками поправить vdisk.vcxproj файл.
Ы?
DiRTy_GaRRy
Posts: 705
Joined: Tue 05 Apr, 2005 09:26
Been thanked: 3 times
Contact:

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

Post by DiRTy_GaRRy »

Как то так:

Code: Select all

  <PropertyGroup>
    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
  </PropertyGroup>
Ы?
User avatar
NightRoman
Posts: 5945
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 14 times
Been thanked: 15 times
Contact:

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

Post by NightRoman »

Только при этом придется собирать с помощью компилятора VS 2008, если не ошибаюсь. То есть VS 2008 должна быть на машине тоже. Так вроде обстоят дела с FarNet. Может, что поменялось с тех пор (сервис пак, может, что поменял), но раньше было так.
User avatar
NightRoman
Posts: 5945
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 14 times
Been thanked: 15 times
Contact:

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

Post by NightRoman »

И рантайм понадобится от VS 2008, соответственно. А компилятор оттуда автоматом задействуется, это настраивать не надо.
Ariman
Posts: 1291
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 41 times
Contact:

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

Post by Ariman »

Dzirt2005 wrote:Возможно, дело в ключе реестра:

Code: Select all

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion]
"EnableLog"=dword:00000001
Если его поставить, то будет падать
Не получается что-то. В eventlog записало сообщение, но падать отказывается. Я, правда, только пробовал убирать переименованием весь фреймворк. Надо попробовать убрать 4-ку и оставить остальные версии.
NightRoman wrote:И рантайм понадобится от VS 2008, соответственно. А компилятор оттуда автоматом задействуется, это настраивать не надо.
Вот это и смущает. Пропадает вообще смысл в сборке под 2010 студией, если и рантайм и компилятор от 2008-й используется.
Ariman
Posts: 1291
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 41 times
Contact:

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

Post by Ariman »

Очередная поделка на потестить, для желающих. Написал обвертку для WCX плагинов от TC. Поддерживаются и ANSI, и Unicode плагины.
По умолчанию *.wcx файлы складываются в папку wcx рядом с модулем. Но можно и в настройках прописать где они лежит.


PS. Не забываем прописывать модуль в настройках.
Attachments
wcx64.rar
(11.44 KiB) Downloaded 92 times
wcx.rar
(9.66 KiB) Downloaded 103 times
Denis
Posts: 1431
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 9 times
Been thanked: 3 times

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

Post by Denis »

Не открываются nsis инсталляторы x64 версией (1.8.5, 1.8.6). Например, foobar2000_v1.1.13.exe
Far 3.0 build 2771 x64
Observer_Far3_x64_186.rar
Ariman
Posts: 1291
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 41 times
Contact:

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

Post by Ariman »

Denis wrote:Не открываются nsis инсталляторы x64 версией
- Только NSIS не работает, остальные модули нормально?
- Модуль вообще загрузился, в списке есть?
Denis
Posts: 1431
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 9 times
Been thanked: 3 times

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

Post by Denis »

Остальные вроде работают.
Модуль загрузился, но не открывает.
Denis
Posts: 1431
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 9 times
Been thanked: 3 times

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

Post by Denis »

Code: Select all

wstring ResolveFullPath(const wchar_t* input)
Для файла "foobar2000_v1.1.13.exe", который "D:\foobar2000_v1.1.13.exe" возвращает "D:\_other\2012.07.23\obs\src\plugin\foobar2000_v1.1.13.exe"
Denis
Posts: 1431
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 9 times
Been thanked: 3 times

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

Post by Denis »

Не очень разбираюсь в плагинах, потому примитивный патч:


p.s. патч обновлён
p.p.s. забыл указать самое главное - файл открывался через префикс
p.p.p.s. патч снова обновлён - код взят у Maximus5
Post Reply

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