Total7zip

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

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

Аватара пользователя
Total7zip
Сообщения: 287
Зарегистрирован: Сб ноя 27, 2010 03:22

Сообщение Total7zip »

ссылка работает, проверил

про exe - чтоб плагин открыл exe файл, этот файл должен быть самораспаковывающимся архивом. например, вот проверил на таком дистрибутиве - http://portableapps.com/news/2010-11-24 ... able_5.8.5
открывает.
если можно - дайте ссылку на тот ехе, который у вас не открывается.
Аватара пользователя
flm
Сообщения: 467
Зарегистрирован: Вс дек 09, 2007 05:54

Сообщение flm »

Total7zip
Упаковка будет поддерживаться?
Nikola Ant
У меня нормально скачалось.
cogito ergo sum
http://www.yakimchuk.ru/questions.htm - Как правильно задавать вопросы
Аватара пользователя
Total7zip
Сообщения: 287
Зарегистрирован: Сб ноя 27, 2010 03:22

Сообщение Total7zip »

упаковка отличается тем, что у нее есть множество параметров.
дублировать интерфейс 7zip мне не хочется,
если есть возможность вызывать диалог настройки из самого 7zip, упаковка будет.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Total7zip писал(а):дублировать интерфейс 7zip мне не хочется,
если есть возможность вызывать диалог настройки из самого 7zip, упаковка будет.
Думаю, можно научить плагин вызывать 7zG.exe так, как это делает расширение оболочки 7зипа - тогда и диалог настроек будет, и диалог упаковки, и упаковка в фоне, и всё это из тотала. Только разобраться, как он это делает - хорошо хоть, исходники есть. А довесок в 200 кило к дллке в 700 для функции упаковки - не так и много, тем более у многих 7зип стоит на компе.
Reflector
Сообщения: 56
Зарегистрирован: Вс ноя 29, 2009 17:51

Сообщение Reflector »

Total7zip писал(а): про exe - чтоб плагин открыл exe файл, этот файл должен быть самораспаковывающимся архивом.
Например, вот это http://www.manutd8.com/SopCast-3.2.4.zip сам 7z открывает, а плагин нет.
упаковка отличается тем, что у нее есть множество параметров.
дублировать интерфейс 7zip мне не хочется,
если есть возможность вызывать диалог настройки из самого 7zip, упаковка будет.
Самораспаковка и шифрование выбирается для всех плагинов, а компрессию мало кто постоянно меняет, можно и в ini прописать строку параметров.
Думаю, можно научить плагин вызывать 7zG.exe так, как это делает расширение оболочки 7зипа - тогда и диалог настроек будет, и диалог упаковки, и упаковка в фоне, и всё это из тотала.
Я так и делал, только в 7zG.exe нет диалога настроек. Но это самый простой вариант, получить от тотала список файлов и передать его 7zG...
Аватара пользователя
jentoso
Сообщения: 443
Зарегистрирован: Чт дек 20, 2007 01:36

Сообщение jentoso »

Если я правильно понял, то конфиг 7zipUnicode.ini не поддерживает %commander_path% для загрузки dll?
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Reflector писал(а):
Думаю, можно научить плагин вызывать 7zG.exe так, как это делает расширение оболочки 7зипа - тогда и диалог настроек будет, и диалог упаковки, и упаковка в фоне, и всё это из тотала.
Я так и делал, только в 7zG.exe нет диалога настроек. Но это самый простой вариант, получить от тотала список файлов и передать его 7zG...
В том и дело, что он там есть. Достаточно посмотреть в редакторе ресурсов. Вопрос лишь в том, как его вызвать (ведь расширение оболочки как-то запускает 7zG.exe с вызовом диалога), и как передать ему список файлов при таком способе вызова - расширение оболочки использует какие-то хитрые (возможно, традиционные расширениям оболочки, но незнакомые мне) средства.

Сравнил командные строки при вызове компрессии напрямую и через диалог - во втором случае используется параметр -ad - попробуй использовать его в своей командной строке, возможно, диалог отобразится.

Проверил - простенькая кнопочка для 7zG.exe со следующими параметрами работает на ура (отображается диалог с предлагаемым именем архива и путем к нему, при этом во время архивации используется системная временная папка):

Код: Выделить всё

a -ad -scsUTF-8 "%T%O.7z" @%UL
Так что такой прием вполне можно использовать и из плагина - при этом весь процесс архивирования в тотале будет занимать считанные секунды - просто построение файла-списка, который потом будет передаваться архиватору 7zG.exe с указанными выше параметрами и удаляться после завершения операции. Единственное, что список придется строить в UTF-8 - это единственный Юникод, который допускает в файлах списков 7-Zip. Но не так и сложно преобразовать UTF-16 в UTF-8 - там есть вполне компактный алгоритм, да и стандартная системная функция WideCharToMultiByte умеет делать это.
Последний раз редактировалось MVV Вт ноя 30, 2010 09:17, всего редактировалось 1 раз.
Аватара пользователя
Total7zip
Сообщения: 287
Зарегистрирован: Сб ноя 27, 2010 03:22

Сообщение Total7zip »

jentoso писал(а):Если я правильно понял, то конфиг 7zipUnicode.ini не поддерживает %commander_path% для загрузки dll?
прямо именно %COMMANDER_PATH% не поддерживается (пока).
но вы можете писать относительный путь, считая что каталог командера это ваш текущий каталог.
например, у меня в одной папке на флешке рядом находятся

Код: Выделить всё

total commander
archive\7-Zip
конфиг выглядит так

Код: Выделить всё

<?xml version="1.0" ?> 
<settings>
    <path_7z_dll>..\archive\7-Zip\7z.dll</path_7z_dll> 
    <passwords save="1">
        <password val="пароль1" /> 
        <password val="пароль2" /> 
    </passwords>
</settings>
с такими настройками плагин запускается у меня без проблем на разных компах, несмотря на то, что флешка получает разные имена.

командер, кстати, запускаю с такими параметрами

Код: Выделить всё

 /I=".\wincmd.ini" /F=".\wcx_ftp.ini"
т.е. настройки он хранит в своей папке.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Total7zip писал(а):т.е. настройки он хранит в своей папке
[off]
В данном случае предпочтительнее ключ UseIniInProgramDir=7 в секции [Configuration] файла wincmd.ini в рабочем каталоге TC. Запуск с параметрами обычно используется для файлов конфигурации с нестандартным именем или нестандартным местоположением.
[/off]
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

MVV писал(а):Проверил - простенькая кнопочка для 7zG.exe со следующими параметрами работает на ура (отображается диалог с предлагаемым именем архива и путем к нему, при этом во время архивации используется системная временная папка):

Код: Выделить всё

a -ad -scsUTF-8 "%T%O.7z" @%UL
Единственное быть может неудобство связано с тем, что 7zG запоминает в реестре последние использованные параметры. Но зато можно изменять их прямо в разделе реестра HKEY_CURRENT_USER\Software\7-Zip\Compression перед вызовом 7zG - тогда будет использоваться нужный формат архива - например, 7z (заодно можно задавать и нужные предустановленные параметры сжатия).
Аватара пользователя
gora
Сообщения: 442
Зарегистрирован: Чт дек 30, 2004 13:09
Откуда: Иваново

Сообщение gora »

Total7zip писал(а):появился конфиг - 7zipUnicode.ini

отредактируйте его, если вы хотите настроить путь к 7z.dll
Уточните:
- путь должен быть абсолютный?
- путь может содержать системные переменные, например, %ProgramFiles% ?
- может ли плагин работать с х64 версией 7z.dll установленного в системе 7-Zip ?
- правильно ли он будет определять %ProgramFiles% на х64 системе с учетом того, что ТС х86 приложение?

Из плагина лучше исключить 7z.dll, т.к. у пользователя архиватор обычно уже установлен и зачастую более новой версии, чем будет со временем в Вашем плагине. ИМХО.
Win7 SP1 Ultimate x64, TC8.52a x64
Аватара пользователя
Total7zip
Сообщения: 287
Зарегистрирован: Сб ноя 27, 2010 03:22

Сообщение Total7zip »

ответ про абсолютные и относительные пути чуть выше
http://forum.wincmd.ru/viewpost.php?p=7 ... c6a0c3e1ac

про 64 бита - насколько я понимаю 32 битное приложение не может использовать 64 битные dll.

а тотал командер у нас пока 32 битный.
Аватара пользователя
mrmerak
Сообщения: 441
Зарегистрирован: Пн авг 20, 2007 03:48

Сообщение mrmerak »

Total7zip
может лучше плагин назвать как твой ник? Это круто. А 7zipUnicode - так се

и да, %COMMANDER_PATH% будет в след. версии?
TC 9.51 | Win10 1903
Аватара пользователя
gora
Сообщения: 442
Зарегистрирован: Чт дек 30, 2004 13:09
Откуда: Иваново

Сообщение gora »

Total7zip писал(а):ответ про абсолютные и относительные пути чуть выше
http://forum.wincmd.ru/viewpost.php?p=7 ... c6a0c3e1ac

про 64 бита - насколько я понимаю 32 битное приложение не может использовать 64 битные dll.

а тотал командер у нас пока 32 битный.
Там нет ответа на мои вопросы. Относительный путь меня не очень устраивает ибо ТС у меня на не системном диске, а 7-Zip установлен по умолчанию - на системный. Относительные пути городить здесь не вариант.
Про использование х64 7z.dll, как я понял, возможности не будет. Значит при упаковке словарь будет ограничен 128МБ даже при наличии х64 системы с RAM=8ГБ. Это печально. Придется пользоваться архиватором, а не плагином...
Win7 SP1 Ultimate x64, TC8.52a x64
Reflector
Сообщения: 56
Зарегистрирован: Вс ноя 29, 2009 17:51

Сообщение Reflector »

MVV писал(а): Проверил - простенькая кнопочка для 7zG.exe со следующими параметрами работает на ура (отображается диалог с предлагаемым именем архива и путем к нему, при этом во время архивации используется системная временная папка):

Код: Выделить всё

a -ad -scsUTF-8 "%T%O.7z" @%UL
Так что такой прием вполне можно использовать и из плагина - при этом весь процесс архивирования в тотале будет занимать считанные секунды - просто построение файла-списка, который потом будет передаваться архиватору 7zG.exe с указанными выше параметрами и удаляться после завершения операции. Единственное, что список придется строить в UTF-8 - это единственный Юникод, который допускает в файлах списков 7-Zip. Но не так и сложно преобразовать UTF-16 в UTF-8 - там есть вполне компактный алгоритм, да и стандартная системная функция WideCharToMultiByte умеет делать это.
И я проверил :) Дело в том, что я писал юникодный плагин под 7z больше года назад, он во многом похож на плагин от Total7zip, т.к. также открывает все типы файлов открываемые 7z, но при этом используя консольную версию для получения информации об архивах и 7zG.exe для паковки/распаковки(автоматически выбирая x64 версию на x64 системах), т.е. фактически тоже можно без проблем копировать эти файлы от более новых версий и получать поддержку новых типов файлов. Но есть одна проблема: у 7z очень убогая командная строка, потому вытянуть из архива вложенные каталоги можно только с полными путями. Например, если архив выглядит как "aaa\bbb\ccc", то разархивировав "ссс" я получаю на диске все равно "aaa\bbb\ccc". В раре для этого случая есть ключ -ap, в 7z его видимо не будет никогда, т.к. хоть автора постоянно просят его добавить, он просто не понимает зачем он вообще нужен... И мне пришлось искать обходные пути, самым простым оказалось использование CreateSymbolicLink, тогда можно автоматически переадресовать распаковку на правильный путь, но этот метод работает начиная с Висты, при распаковке создается временный каталог и существует небольшая вероятность того, что такой каталог уже был, тогда облом... Понятно, что до нахождения более приемных вариантов решения данной проблемы, плагином пользовался только я сам :) Так вот, когда я его писал, то специально искал какие у 7zG.exe ключи и ничего про диалог настроек не нашел... А 7zG.exe я как раз и передавал список файлов в UTF-8, правда предварительно усекая его, т.к., например, если дать паковать один каталог с 10000 файлов, то тотал передаст по одному все 10000 и 7z на таком списке основательно задумается, но можно этот список преобразовать в одну строку с базовым каталогом.
Ответить