Total7zip
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3 ... 41, 42, 43 ... 63, 64, 65  Next  :| |:
Total Commander -> Плагины Total Commander

#616:  Author: goraLocation: Иваново PostPosted: Fri Mar 25, 2011 10:05
    —
Total7zip
Спасибо, что не бросили идею обновления SFX на базе модифицированных модулей.
Ваши выводы отчасти верны, но не совсем. Попробую объяснить возникающие проблемы...
1 Модифицированных модулей существует несколько типов:
Quote:
Для каждого метода сжатия (LZMA, LZMA2, Deflate, PPMd) имеется отдельный модуль, а так же модуль, способный работать с любым из этих методов. Модули существуют в двух вариантах 32-х и 64-х битные. ...
При использовании Deflate и PPMd модулей, исходный 7z архив необходимо сжимать с ключом hc=off архиватора 7-Zip (описание ключа см. в справке архиватора 7-Zip).

2 Получить 7z архив с методом сжатия Deflate через настройки GUI вряд ли получится (во всяком случае я их создаю из ком. строки).
3 Если метод сжатия при обновлении не будет соответствовать типу модуля в SFX, то после обновления SFX не будет работать.
4 Т.к., исходный SFX был работоспособным, и плагин не меняет модуль (и это правильно), то при обновлении SFX метод сжатия менять нельзя.
5 Какой модуль и какой метод сжатия использован, в имеющемся у пользователя SFX, неизвестно. Перекладывать на него получение этих сведений и ручном введении нужных параметров при обновлении SFX - идея неверная. Он не обязан это знать, да и не будет возится так с каждым SFX. В результате он может получить неработоспособный SFX, после такого обновления, и винить в этом будет плагин. И отчасти он будет прав.

Резюме: плагин должен производить обновление SFX без помощи пользователя, ибо его помощь в этом может оказаться деструктивной.

Мое видение решения проблемы:
1 Плагин сам определяет используемые в SFX методы сжатия (в одном архиве методов может быть не один, а несколько!!!).
2 Если в SFX использован только Deflate или PPMd метод, то плагин принудительно используется ключ hc=off (см. цитату выше). Здесь есть некоторые тонкости и этот ключ не всегда обязателен даже для указанных методов сжатия, но ими можно пренебречь.
3 При обновлении SFX, плагин использует, определенный в п.п.1, 2 метод сжатия, принудительно устанавливает максимальные параметры для этого конкретного метода сжатия, определяя их за пользователя. (Доступ пользователя к настройкам в этом случае крайне нежелателен. ИМХО)
4 Таким образом обновление SFX происходит без вмешательства пользователя. Это разгружает его от необходимости знать разные тонкости, а также защищает получаемый обновленный SFX от его неквалифицированных действий.

#617:  Author: Rustn PostPosted: Fri Mar 25, 2011 12:39
    —
Верно gora, по большей части пользователь (не опытный) накуралесит с параметрами.
Когда же плагин определит основные параметры архива, пользователь будет освобождён от тонкостей. Ему же нужно только добавить, обновить архив, и нет интереса знать как это сделать.

#618:  Author: Total7zip PostPosted: Fri Mar 25, 2011 17:55
    —
Total7zip 0.8.3.3
только wcx
http://narod.ru/disk/8405155001/Total7zip_v0833_wcx_test.rar.html
полный комлект
http://wincmd.ru/download.php?id=Total7zip

починил тестирование архивов. раньше все ошибки пропускались.

вынес в настройки режим логирования.
<debug logLevel="0" />
logLevel="0" - отключить (по-умолчанию)
logLevel="1" - основные операции
logLevel="3" - основные операции + операции с каждым файлом

так как пока нет возможности сделать это - "плагин сам определяет используемые в SFX методы сжатия и..."
вынес в настройки режим обновления sfx архивов
<compression updateSfx="0"
updateSfx="0" - по-умолчанию. оставляет sfx модуль без изменений. как 7zFM. это позволяет сохранить иконку, но может привести к неработающему exe, если sfx не поддерживает нужные параметры компрессии.
updateSfx="1" - заменяет sfx на тот, который указан в настройках. более безопасный метод. используйте его если ваш sfx может все, что вам нужно.

0.8.3.1 -> 0.8.3.3 - сильно ускорил тестирование архивов.

#619:  Author: goraLocation: Иваново PostPosted: Tue Mar 29, 2011 09:18
    —
Total7zip wrote:
пока нет возможности сделать это - "плагин сам определяет используемые в SFX методы сжатия

Батником это делается достаточно просто:
Code:
@Echo Off
Set ar=lzma_lzma2.exe

For /F "tokens=1* delims==" %%a In ('"7z.exe l -slt "%ar%" | Find "Method""') Do (
   Set Method=%%b
   GoTo :_End
)
:_End
If Defined Method (Echo Method = %Method%) Else Echo Archive is Password protected
Pause>nul

#620:  Author: Total7zip PostPosted: Wed Mar 30, 2011 18:57
    —
Quote:
7z.exe l -slt

выдает информацию об архиве, а надо бы получить информацию о поддерживаемых sfx-модулем методах компрессии...

#621:  Author: goraLocation: Иваново PostPosted: Thu Mar 31, 2011 09:11
    —
Total7zip wrote:
выдает информацию об архиве, а надо бы получить информацию о поддерживаемых sfx-модулем методах компрессии...

Для модифицированных модулей такую информацию получить можно, а для оригинальных нет (оригинальные универсальны). Как их различать я не знаю да и не было у меня такой необходимости знать это, т.к., пользуюсь только модифицированными, ввиду "убогости" возможностей оригинальных.
Но это отступление...

Плагину и не надо знать ни чего о модуле и поддерживаемых им методах сжатия. Если метод сжатия самого архива после обновления останется без изменений (а оно так и должно быть), то модуль просто обязан "подойти". Следовательно, плагину достаточно информации о самом архиве.

#622:  Author: Total7zip PostPosted: Thu Mar 31, 2011 10:12
    —
в случае, когда одновляется существующий в архиве файл так можно поступать, попробую.

а вот при добавлении в архив файлов других типов использовать, к примеру, PPMd как-то глупо...

на страничке http://7zsfx.info/ru/, я вижу есть
Code:
модуль, способный работать с любым из этих методов

Почему бы вам не использовать его, зачем вам "только PPMd"?

#623:  Author: goraLocation: Иваново PostPosted: Thu Mar 31, 2011 14:18
    —
Total7zip wrote:
а вот при добавлении в архив файлов других типов использовать, к примеру, PPMd как-то глупо...

Это не тип файла, а метод сжатия архива.
Если у нас есть SFX с методом сжатия LZMA, например, то в него можно добавить неупакованные файлы. Можно конечно добавить и файл архива с методом сжатия PPMd, но он тогда в SFX архиве (LZMA) так и останется архивом и ни как не будет распаковываться при запуске SFX, т.к., он был добавлен как файл архива. При этом LZMA модуль прекрасно выполнит задачу и распакует архив первого уровня, т.е., LZMA. Что внутри него еще за архивы будут лежать (RAR, CAB, 7z с методом PPMd) его не волнует.

Total7zip wrote:
Почему бы вам не использовать его, зачем вам "только PPMd"?

Речь не обо мне, у меня свои пристрастия в выборе метода сжатия. Модуль такой существует, значит он кому то нужен, и такой SFX может оказаться у пользователя Вашего плагина. Значит это надо или решать, или написать ограничение на возможности Вашего плагина при работе с SFX архивами "некоторых" типов, или просто "забыть" и "забить" на эту проблему.
Вы - автор, решайте...

#624:  Author: Total7zip PostPosted: Wed Apr 06, 2011 13:01
    —
по просьбам пользователей, у которых нет админских прав

0.8.4.0
Если Total Commander запущен в portable режиме, Total7zip.xml хранится в папке плагина, как и в прошлых версиях.
По-умолчанию это %COMMANDER_PATH%\Plugins\WCX\Total7zip\Total7zip.xml
Во всех остальных случаях Total7zip.xml сохраняется в ту же папку, где Total Commander хранит wincmd.ini.

подробнее тут - http://ghisler.ch/board/viewtopic.php?p=219544&highlight=#219544

#625:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Apr 06, 2011 15:26
    —
А каким путем портабельность определяется?

По мне, так без разницы, какому файлу давать права - в папке плагина или в папке тотала) у меня wincmd.ini в папке тотала лежит.

#626:  Author: Total7zip PostPosted: Wed Apr 06, 2011 15:46
    —
определяется просто - сравниваются переменные окружения
COMMANDER_INI и COMMANDER_PATH
если wincmd.ini лежит в папке тотала, то плагин хранит свои настройки в своей папке, как раньше.

если COMMANDER_INI указывает куда-то еще, то и плагин будет хранить там свои настройки.

PS. я немного поэкспериментировал и понял, что, похоже, единственный способ запускать TC с wincmd.ini из его же папки, это передавать в коммандной строке
Code:
/I=.\wincmd.ini /F=.\wcx_ftp.ini

потому что иначе путь к этим файлам может браться из ключей реестра
Code:
[HKEY_CURRENT_USER\Software\Ghisler\Total Commander]
"IniFileName"="...........\\wincmd.ini"
"FtpIniName"="............\\wcx_ftp.ini"

и параметр UseIniInProgramDir в wincmd.ini игнорируется.

#627:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Apr 06, 2011 17:40
    —
А зачем сравнивать? Почему нельзя просто взять предлагаемый тоталом путь к ини-файлу плагина (DefaultIniName из структуры PackDefaultParamStruct/ContentDefaultParamStruct и т.п.) и держать конфиг в той папке? А для возможности портабельности я у себя в Virtual Panel поступил так: если в папке плагина есть ini (в твоем случае - xml), я использую его, иначе - путь, который предлагает тотал.

Если файл wincmd.ini лежит в папке тотала и в нём UseIniInProgramDir=7, то тотал, независимо от записей в реестре, использует конфиги в своей папке. Единственный способ запустить такой тотал с другим конфигом - параметр /I.

#628:  Author: Total7zip PostPosted: Wed Apr 06, 2011 17:59
    —
UseIniInProgramDir=7 - спасибо, не знал. у меня стояла 1 и как только я попал на чужой комп, где путь был прописан в реестре все сломалось.

по поводу того, чтоб путь брать из PackDefaultParamStruct или ContentDefaultParamStruct - не хочу.

во-первых, слишком запутано.
получается, если плагин грузят как lister - путь берется из одного места.
если как packer - из другого, если как content - из третьего.

во-вторых там передается не Unicode путь, и мне кажется, что это дыра.

гораздо проще прочитать значание COMMANDER_INI

#629:  Author: MVVLocation: Ростов-Дон PostPosted: Wed Apr 06, 2011 19:52
    —
Ваще-то, UseIniInProgramDir содержит 3 бита: 1 для wincmd.ini, 2 для wcx_ftp.ini и 4 для игнора реестра. Smile

У тотала настройки всех плагинов хранятся в одной папке, так что не такая это и большая проблема. Но согласен, для разных типов плагинов лучше иметь что-то более-менее общее. К слову, ничто не мешает (и никто не запрещает) тебе добавить свою секцию в wincmd.ini, в которой прописать путь к твоему конфигу. Тогда плагины всех типов будут иметь к нему доступ.

А насчет чтения COMMANDER_INI - если читаешь её, тогда читай всегда, не нужно ни с чем её сравнивать. Smile

#630:  Author: Total7zip PostPosted: Wed Apr 06, 2011 20:29
    —
мне все-таки больше нравится когда в портабл варианте конфиг лежит в папке с плагином.
например, посмотрел сейчас, у меня в папке с TC лежат от плагинов
jpg-comment.ini
ShellDetails.ini
visualdirsize.ini
и чего в этом хорошего?...

корче говоря, это просто фикс, для тех (странных пользователей), кто ставит TC в папку, в которой у них нет прав на запись. для тех, кого устраивал старый вариант ничего не поменялось =)



Total Commander -> Плагины Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3 ... 41, 42, 43 ... 63, 64, 65  Next  :| |:
Page 42 of 65

Powered by phpBB © 2001, 2005 phpBB Group