cmdTotal 2.02: Поддержка юникодных плагинов

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Откуда: Москва
Контактная информация:

cmdTotal 2.02: Поддержка юникодных плагинов

Сообщение CaptainFlint »

Поскольку есть интерес в использовании утилиты cmdTotal в современном окружении, я доработал её до поддержки юникодного API. Утилита сначала пытается использовать юникодные функции, а если не получается, — обращается к плагину через ANSI-интерфейсы. Поддержка систем Win9x в данной версии отсутствует.

Ссылки на скачивание:
основная / зеркало (8,6 Кб)

P.S. Автором оригинальной программы является Adam Blaszczyk (KaKeeware). К сожалению, его сайт прекратил существование. Частично сохранённую копию исходной страницы можно найти на Internet Archive.
Последний раз редактировалось CaptainFlint Пн мар 02, 2015 22:53, всего редактировалось 4 раза.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
gora
Сообщения: 442
Зарегистрирован: Чт дек 30, 2004 13:09
Откуда: Иваново

Сообщение gora »

CaptainFlint
Огромное спасибо. Первые тесты показали положительные результаты.
Немного странной (запутывающей) выглядит информация о версии и копирайтах. Она разная при запуске старых и новых плагинов. Так задумано? Может не стоит "путать" пользователя? ;)
Win7 SP1 Ultimate x64, TC8.52a x64
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Откуда: Москва
Контактная информация:

Сообщение CaptainFlint »

gora писал(а):Немного странной (запутывающей) выглядит информация о версии и копирайтах. Она разная при запуске старых и новых плагинов.
Не могёт того быть. Ты точно один и тот же файл пускаешь?
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
gora
Сообщения: 442
Зарегистрирован: Чт дек 30, 2004 13:09
Откуда: Иваново

Сообщение gora »

CaptainFlint писал(а):Не могёт того быть.
Упс... Точно, мой косяк. :( Пути к утилитам в скрипте берутся из %PATH%, а там оказались обе версии в разных папках.
Мои извинения за дезинформацию.
Win7 SP1 Ultimate x64, TC8.52a x64
Аватара пользователя
gora
Сообщения: 442
Зарегистрирован: Чт дек 30, 2004 13:09
Откуда: Иваново

Сообщение gora »

CaptainFlint
Тестовый стенд:
- плагин ISO взятый здесь
- образ VBoxGuestAdditions.iso версии 4.2.10 из пакета VirtualBox. Образ сконветрирован в VBOXADDITIONS_4.2.10_84104.img с помощью UltraISO
- сам плагин распаковывает содержимое .img образа корректно.
- распаковка через старый cmdTotal.exe+плагин происходит с ошибками. Все файлы в корне образа распаковываются корректно, а вложенные папки распаковываются в файлы без расширения и размером все 2048 байт.
- распаковка через новый cmdTotal.exe+плагин происходит с ошибками. Все файлы в корне образа распаковываются в файлы размером 2048 байт (все, которые больше этой величины) и один с нормальным размером, т.к. он 647 байт, а вложенные папки распаковываются в файлы без расширения и размером все 2048 байт.
Проверка этих "обрезанных" файлов показывает, что это начала нужных файлов, но в них только первые 2 КБ этих файлов.
Win7 SP1 Ultimate x64, TC8.52a x64
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Откуда: Москва
Контактная информация:

Сообщение CaptainFlint »

gora
Выложи, плиз, сам IMG-файл. Неохота ставить ультру только ради конвертации (и ещё не факт, что триалка нормально сконвертит).

Добавлено спустя 25 минут:

А впрочем, не надо, на исходной исошке тоже воспроизводится, только файлы урезаются по 20480 байт, а не по 2048.
Попробую разобраться. Там, кстати, ещё одна бага есть: если не указывать целевой каталог, а имя архива указано с путём, то распаковка не выполняется совсем. Тоже планирую поправить.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Откуда: Москва
Контактная информация:

Сообщение CaptainFlint »

gora
Выяснил, в чём дело. Вообще говоря, виноват плагин, рассчитывающий на никем не обещанное поведение и в результате падающий после извлечения первого же блока данных (этим объясняется размер в 20480 байт у файлов), а также не учитывающий собственную же информацию о том, что из его объектов является файлом, а что — каталогом. Поскольку Тотал ведёт себя иначе, чем утилитка, в нём всё работает. Подогнал найденные различия под поведение Тотала, теперь у меня исошка распаковывается корректно. Вторую найденную мной багу тоже поправил. Тестовая версия 2.01 в шапке.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
gora
Сообщения: 442
Зарегистрирован: Чт дек 30, 2004 13:09
Откуда: Иваново

Сообщение gora »

CaptainFlint

Проверил на пяти видах образов: bin, img, iso, mdf, nrg
Все распаковалось корректно.
Второй баг также проверил на всех пяти форматах, баг отсутствует.

Спасибо! :)

Если еще что наковыряю, отпишу.
Win7 SP1 Ultimate x64, TC8.52a x64
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Откуда: Москва
Контактная информация:

Сообщение CaptainFlint »

gora
Хорошо бы погонять на самых разных плагинах, чтобы убедиться, что такая заточка под ляпы конкретного плагина не отразилась на прочих. Кое-что я, конечно, тоже проверяю, но поскольку этой утилитой в целом не пользуюсь, то тщательного тестирования обеспечить не могу.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
LonerD
Сообщения: 1173
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

CaptainFlint
Баг или не баг, но утилитка с помощью специфического плагина wordarc.wcx не может извлечь файл в формате txt из doc-файла. Если открыть этот же doc-файл в Тотале как архив - то формат извлекается.
Windows 11 | TC DreamLair eternal pre-α
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Откуда: Москва
Контактная информация:

Сообщение CaptainFlint »

LonerD
Выложи пример файла и скажи, какой именно из txt-вариантов не извлекается, там их 9 штук. Причём у меня 4 из них распаковываются нормально, остальные сыпят ошибками, что в Тотале, что в cmdTotal (из-за отсутствия MS Word в системе).
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
LonerD
Сообщения: 1173
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Файл любой, насколько я понимаю - любой. Пример простейшего файла.
http://rghost.ru/45326129
Стоит Word 2013.
Не извлекается самый простейший вариант - word.txt (если открыть файл как архив - то извлекается).
http://rghost.ru/45326252.view
Windows 11 | TC DreamLair eternal pre-α
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Откуда: Москва
Контактная информация:

Сообщение CaptainFlint »

LonerD
Как выяснилось, проблема в плагине. Для word.txt он использует OLE-интерфейс Ворда, только вот про то, что предварительно нужно ещё проинициализировать COM-подсистему, он то ли забыл, то ли просто решил не заморачиваться. Обычно всё происходит в памяти Тотала, который для своих целей уже всё проинициализировал, поэтому с Тоталом плагин работает, а с утилитой — нет.

Я могу добавить вызов CoInitialize (проверил, с ним работает), но на каждый плагин не напасёшься. Мало ли чего ещё забудут проинициализировать, а утилитка в итоге потащит за собой ворох тяжеловесных зависимостей, нужных только для залатывания таких вот глюков. Не нравится мне эта идея…
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
LonerD
Сообщения: 1173
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Я могу добавить вызов CoInitialize (проверил, с ним работает), но на каждый плагин не напасёшься.
Да уж, ситуация специфическая.
Недоделан плагин, а виноватой получается утилитка, потому что в Тотале плагин-то работает, претензий к нему не предъявишь :roll:
Windows 11 | TC DreamLair eternal pre-α
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Откуда: Москва
Контактная информация:

Сообщение CaptainFlint »

В общем, раз баг не мой, пока публикую текущую версию полноценно, а там посмотрим.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Ответить