Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Total7zip 
Author Message
Reflector



PostPosted: Tue Nov 30, 2010 14:33    Post subject: Reply with quote

MVV wrote:

Проверил - простенькая кнопочка для 7zG.exe со следующими параметрами работает на ура (отображается диалог с предлагаемым именем архива и путем к нему, при этом во время архивации используется системная временная папка):
Code:
a -ad -scsUTF-8 "%T%O.7z" @%UL

Так что такой прием вполне можно использовать и из плагина - при этом весь процесс архивирования в тотале будет занимать считанные секунды - просто построение файла-списка, который потом будет передаваться архиватору 7zG.exe с указанными выше параметрами и удаляться после завершения операции. Единственное, что список придется строить в UTF-8 - это единственный Юникод, который допускает в файлах списков 7-Zip. Но не так и сложно преобразовать UTF-16 в UTF-8 - там есть вполне компактный алгоритм, да и стандартная системная функция WideCharToMultiByte умеет делать это.

И я проверил Smile Дело в том, что я писал юникодный плагин под 7z больше года назад, он во многом похож на плагин от Total7zip, т.к. также открывает все типы файлов открываемые 7z, но при этом используя консольную версию для получения информации об архивах и 7zG.exe для паковки/распаковки(автоматически выбирая x64 версию на x64 системах), т.е. фактически тоже можно без проблем копировать эти файлы от более новых версий и получать поддержку новых типов файлов. Но есть одна проблема: у 7z очень убогая командная строка, потому вытянуть из архива вложенные каталоги можно только с полными путями. Например, если архив выглядит как "aaa\bbb\ccc", то разархивировав "ссс" я получаю на диске все равно "aaa\bbb\ccc". В раре для этого случая есть ключ -ap, в 7z его видимо не будет никогда, т.к. хоть автора постоянно просят его добавить, он просто не понимает зачем он вообще нужен... И мне пришлось искать обходные пути, самым простым оказалось использование CreateSymbolicLink, тогда можно автоматически переадресовать распаковку на правильный путь, но этот метод работает начиная с Висты, при распаковке создается временный каталог и существует небольшая вероятность того, что такой каталог уже был, тогда облом... Понятно, что до нахождения более приемных вариантов решения данной проблемы, плагином пользовался только я сам Smile Так вот, когда я его писал, то специально искал какие у 7zG.exe ключи и ничего про диалог настроек не нашел... А 7zG.exe я как раз и передавал список файлов в UTF-8, правда предварительно усекая его, т.к., например, если дать паковать один каталог с 10000 файлов, то тотал передаст по одному все 10000 и 7z на таком списке основательно задумается, но можно этот список преобразовать в одну строку с базовым каталогом.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group