Страница 3 из 68
Добавлено: Пн ноя 29, 2010 23:05
Total7zip
ссылка работает, проверил
про exe - чтоб плагин открыл exe файл, этот файл должен быть самораспаковывающимся архивом. например, вот проверил на таком дистрибутиве -
http://portableapps.com/news/2010-11-24 ... able_5.8.5
открывает.
если можно - дайте ссылку на тот ехе, который у вас не открывается.
Добавлено: Пн ноя 29, 2010 23:08
flm
Total7zip
Упаковка будет поддерживаться?
Nikola Ant
У меня нормально скачалось.
Добавлено: Пн ноя 29, 2010 23:22
Total7zip
упаковка отличается тем, что у нее есть множество параметров.
дублировать интерфейс 7zip мне не хочется,
если есть возможность вызывать диалог настройки из самого 7zip, упаковка будет.
Добавлено: Пн ноя 29, 2010 23:38
MVV
Total7zip писал(а):дублировать интерфейс 7zip мне не хочется,
если есть возможность вызывать диалог настройки из самого 7zip, упаковка будет.
Думаю, можно научить плагин вызывать 7zG.exe так, как это делает расширение оболочки 7зипа - тогда и диалог настроек будет, и диалог упаковки, и упаковка в фоне, и всё это из тотала. Только разобраться, как он это делает - хорошо хоть, исходники есть. А довесок в 200 кило к дллке в 700 для функции упаковки - не так и много, тем более у многих 7зип стоит на компе.
Добавлено: Вт ноя 30, 2010 00:03
Reflector
Total7zip писал(а):
про exe - чтоб плагин открыл exe файл, этот файл должен быть самораспаковывающимся архивом.
Например, вот это
http://www.manutd8.com/SopCast-3.2.4.zip сам 7z открывает, а плагин нет.
упаковка отличается тем, что у нее есть множество параметров.
дублировать интерфейс 7zip мне не хочется,
если есть возможность вызывать диалог настройки из самого 7zip, упаковка будет.
Самораспаковка и шифрование выбирается для всех плагинов, а компрессию мало кто постоянно меняет, можно и в ini прописать строку параметров.
Думаю, можно научить плагин вызывать 7zG.exe так, как это делает расширение оболочки 7зипа - тогда и диалог настроек будет, и диалог упаковки, и упаковка в фоне, и всё это из тотала.
Я так и делал, только в 7zG.exe нет диалога настроек. Но это самый простой вариант, получить от тотала список файлов и передать его 7zG...
Добавлено: Вт ноя 30, 2010 06:12
jentoso
Если я правильно понял, то конфиг 7zipUnicode.ini не поддерживает %commander_path% для загрузки dll?
Добавлено: Вт ноя 30, 2010 08:43
MVV
Reflector писал(а):
Думаю, можно научить плагин вызывать 7zG.exe так, как это делает расширение оболочки 7зипа - тогда и диалог настроек будет, и диалог упаковки, и упаковка в фоне, и всё это из тотала.
Я так и делал, только в 7zG.exe нет диалога настроек. Но это самый простой вариант, получить от тотала список файлов и передать его 7zG...
В том и дело, что он там есть. Достаточно посмотреть в редакторе ресурсов. Вопрос лишь в том, как его вызвать (ведь расширение оболочки как-то запускает 7zG.exe с вызовом диалога), и как передать ему список файлов при таком способе вызова - расширение оболочки использует какие-то хитрые (возможно, традиционные расширениям оболочки, но незнакомые мне) средства.
Сравнил командные строки при вызове компрессии напрямую и через диалог - во втором случае используется параметр
-ad - попробуй использовать его в своей командной строке, возможно, диалог отобразится.
Проверил - простенькая кнопочка для 7zG.exe со следующими параметрами работает на ура (отображается диалог с предлагаемым именем архива и путем к нему, при этом во время архивации используется системная временная папка):
Так что такой прием вполне можно использовать и из плагина - при этом весь процесс архивирования в тотале будет занимать считанные секунды - просто построение файла-списка, который потом будет передаваться архиватору 7zG.exe с указанными выше параметрами и удаляться после завершения операции. Единственное, что список придется строить в UTF-8 - это единственный Юникод, который допускает в файлах списков 7-Zip. Но не так и сложно преобразовать UTF-16 в UTF-8 - там есть вполне компактный алгоритм, да и стандартная системная функция
WideCharToMultiByte умеет делать это.
Добавлено: Вт ноя 30, 2010 09:15
Total7zip
jentoso писал(а):Если я правильно понял, то конфиг 7zipUnicode.ini не поддерживает %commander_path% для загрузки dll?
прямо именно %COMMANDER_PATH% не поддерживается (пока).
но вы можете писать относительный путь, считая что каталог командера это ваш текущий каталог.
например, у меня в одной папке на флешке рядом находятся
конфиг выглядит так
Код: Выделить всё
<?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>
с такими настройками плагин запускается у меня без проблем на разных компах, несмотря на то, что флешка получает разные имена.
командер, кстати, запускаю с такими параметрами
т.е. настройки он хранит в своей папке.
Добавлено: Вт ноя 30, 2010 09:23
Avada
Total7zip писал(а):т.е. настройки он хранит в своей папке
[off]
В данном случае предпочтительнее ключ
UseIniInProgramDir=7 в секции
[Configuration] файла
wincmd.ini в рабочем каталоге TC. Запуск с параметрами обычно используется для файлов конфигурации с нестандартным именем или нестандартным местоположением.
[/off]
Добавлено: Вт ноя 30, 2010 09:36
MVV
MVV писал(а):Проверил - простенькая кнопочка для 7zG.exe со следующими параметрами работает на ура (отображается диалог с предлагаемым именем архива и путем к нему, при этом во время архивации используется системная временная папка):
Единственное быть может неудобство связано с тем, что 7zG запоминает в реестре последние использованные параметры. Но зато можно изменять их прямо в разделе реестра
HKEY_CURRENT_USER\Software\7-Zip\Compression перед вызовом 7zG - тогда будет использоваться нужный формат архива - например, 7z (заодно можно задавать и нужные предустановленные параметры сжатия).
Добавлено: Вт ноя 30, 2010 11:10
gora
Total7zip писал(а):появился конфиг - 7zipUnicode.ini
отредактируйте его, если вы хотите настроить путь к 7z.dll
Уточните:
- путь должен быть абсолютный?
- путь может содержать системные переменные, например, %ProgramFiles% ?
- может ли плагин работать с х64 версией 7z.dll установленного в системе 7-Zip ?
- правильно ли он будет определять %ProgramFiles% на х64 системе с учетом того, что ТС х86 приложение?
Из плагина лучше исключить 7z.dll, т.к. у пользователя архиватор обычно уже установлен и зачастую более новой версии, чем будет со временем в Вашем плагине. ИМХО.
Добавлено: Вт ноя 30, 2010 11:22
Total7zip
ответ про абсолютные и относительные пути чуть выше
http://forum.wincmd.ru/viewpost.php?p=7 ... c6a0c3e1ac
про 64 бита - насколько я понимаю 32 битное приложение не может использовать 64 битные dll.
а тотал командер у нас пока 32 битный.
Добавлено: Вт ноя 30, 2010 12:09
mrmerak
Total7zip
может лучше плагин назвать как твой ник? Это круто. А 7zipUnicode - так се
и да, %COMMANDER_PATH% будет в след. версии?
Добавлено: Вт ноя 30, 2010 12:10
gora
Там нет ответа на мои вопросы. Относительный путь меня не очень устраивает ибо ТС у меня на не системном диске, а 7-Zip установлен по умолчанию - на системный. Относительные пути городить здесь не вариант.
Про использование х64 7z.dll, как я понял, возможности не будет. Значит при упаковке словарь будет ограничен 128МБ даже при наличии х64 системы с RAM=8ГБ. Это печально. Придется пользоваться архиватором, а не плагином...
Добавлено: Вт ноя 30, 2010 13:33
Reflector
MVV писал(а):
Проверил - простенькая кнопочка для 7zG.exe со следующими параметрами работает на ура (отображается диалог с предлагаемым именем архива и путем к нему, при этом во время архивации используется системная временная папка):
Так что такой прием вполне можно использовать и из плагина - при этом весь процесс архивирования в тотале будет занимать считанные секунды - просто построение файла-списка, который потом будет передаваться архиватору 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 на таком списке основательно задумается, но можно этот список преобразовать в одну строку с базовым каталогом.