View previous topic :: View next topic |
Author |
Message |
gora
Joined: 30 Dec 2004 Posts: 442 Location: Иваново
|
(Separately) Posted: Fri Mar 25, 2011 10:05 Post subject: |
|
|
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 от его неквалифицированных действий. _________________ Win7 SP1 Ultimate x64, TC8.52a x64 |
|
Back to top |
|
|
Rustn
Joined: 15 Dec 2010 Posts: 45
|
(Separately) Posted: Fri Mar 25, 2011 12:39 Post subject: |
|
|
Верно gora, по большей части пользователь (не опытный) накуралесит с параметрами.
Когда же плагин определит основные параметры архива, пользователь будет освобождён от тонкостей. Ему же нужно только добавить, обновить архив, и нет интереса знать как это сделать. |
|
Back to top |
|
|
Total7zip
Joined: 27 Nov 2010 Posts: 287
|
(Separately) Posted: Fri Mar 25, 2011 17:55 Post subject: |
|
|
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 - сильно ускорил тестирование архивов. _________________ Total7zip - архиваторный+content+lister плагин, 0.8.5.2 |
|
Back to top |
|
|
gora
Joined: 30 Dec 2004 Posts: 442 Location: Иваново
|
(Separately) Posted: Tue Mar 29, 2011 09:18 Post subject: |
|
|
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
|
_________________ Win7 SP1 Ultimate x64, TC8.52a x64 |
|
Back to top |
|
|
Total7zip
Joined: 27 Nov 2010 Posts: 287
|
|
Back to top |
|
|
gora
Joined: 30 Dec 2004 Posts: 442 Location: Иваново
|
(Separately) Posted: Thu Mar 31, 2011 09:11 Post subject: |
|
|
Total7zip wrote: | выдает информацию об архиве, а надо бы получить информацию о поддерживаемых sfx-модулем методах компрессии... |
Для модифицированных модулей такую информацию получить можно, а для оригинальных нет (оригинальные универсальны). Как их различать я не знаю да и не было у меня такой необходимости знать это, т.к., пользуюсь только модифицированными, ввиду "убогости" возможностей оригинальных.
Но это отступление...
Плагину и не надо знать ни чего о модуле и поддерживаемых им методах сжатия. Если метод сжатия самого архива после обновления останется без изменений (а оно так и должно быть), то модуль просто обязан "подойти". Следовательно, плагину достаточно информации о самом архиве. _________________ Win7 SP1 Ultimate x64, TC8.52a x64 |
|
Back to top |
|
|
Total7zip
Joined: 27 Nov 2010 Posts: 287
|
(Separately) Posted: Thu Mar 31, 2011 10:12 Post subject: |
|
|
в случае, когда одновляется существующий в архиве файл так можно поступать, попробую.
а вот при добавлении в архив файлов других типов использовать, к примеру, PPMd как-то глупо...
на страничке http://7zsfx.info/ru/, я вижу есть
Code: | модуль, способный работать с любым из этих методов |
Почему бы вам не использовать его, зачем вам "только PPMd"? _________________ Total7zip - архиваторный+content+lister плагин, 0.8.5.2 |
|
Back to top |
|
|
gora
Joined: 30 Dec 2004 Posts: 442 Location: Иваново
|
(Separately) Posted: Thu Mar 31, 2011 14:18 Post subject: |
|
|
Total7zip wrote: | а вот при добавлении в архив файлов других типов использовать, к примеру, PPMd как-то глупо... |
Это не тип файла, а метод сжатия архива.
Если у нас есть SFX с методом сжатия LZMA, например, то в него можно добавить неупакованные файлы. Можно конечно добавить и файл архива с методом сжатия PPMd, но он тогда в SFX архиве (LZMA) так и останется архивом и ни как не будет распаковываться при запуске SFX, т.к., он был добавлен как файл архива. При этом LZMA модуль прекрасно выполнит задачу и распакует архив первого уровня, т.е., LZMA. Что внутри него еще за архивы будут лежать (RAR, CAB, 7z с методом PPMd) его не волнует.
Total7zip wrote: | Почему бы вам не использовать его, зачем вам "только PPMd"? |
Речь не обо мне, у меня свои пристрастия в выборе метода сжатия. Модуль такой существует, значит он кому то нужен, и такой SFX может оказаться у пользователя Вашего плагина. Значит это надо или решать, или написать ограничение на возможности Вашего плагина при работе с SFX архивами "некоторых" типов, или просто "забыть" и "забить" на эту проблему.
Вы - автор, решайте... _________________ Win7 SP1 Ultimate x64, TC8.52a x64 |
|
Back to top |
|
|
Total7zip
Joined: 27 Nov 2010 Posts: 287
|
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
|
Back to top |
|
|
Total7zip
Joined: 27 Nov 2010 Posts: 287
|
(Separately) Posted: Wed Apr 06, 2011 15:46 Post subject: |
|
|
определяется просто - сравниваются переменные окружения
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 игнорируется. _________________ Total7zip - архиваторный+content+lister плагин, 0.8.5.2 |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Wed Apr 06, 2011 17:40 Post subject: |
|
|
А зачем сравнивать? Почему нельзя просто взять предлагаемый тоталом путь к ини-файлу плагина (DefaultIniName из структуры PackDefaultParamStruct/ContentDefaultParamStruct и т.п.) и держать конфиг в той папке? А для возможности портабельности я у себя в Virtual Panel поступил так: если в папке плагина есть ini (в твоем случае - xml), я использую его, иначе - путь, который предлагает тотал.
Если файл wincmd.ini лежит в папке тотала и в нём UseIniInProgramDir=7, то тотал, независимо от записей в реестре, использует конфиги в своей папке. Единственный способ запустить такой тотал с другим конфигом - параметр /I. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
Total7zip
Joined: 27 Nov 2010 Posts: 287
|
(Separately) Posted: Wed Apr 06, 2011 17:59 Post subject: |
|
|
UseIniInProgramDir=7 - спасибо, не знал. у меня стояла 1 и как только я попал на чужой комп, где путь был прописан в реестре все сломалось.
по поводу того, чтоб путь брать из PackDefaultParamStruct или ContentDefaultParamStruct - не хочу.
во-первых, слишком запутано.
получается, если плагин грузят как lister - путь берется из одного места.
если как packer - из другого, если как content - из третьего.
во-вторых там передается не Unicode путь, и мне кажется, что это дыра.
гораздо проще прочитать значание COMMANDER_INI _________________ Total7zip - архиваторный+content+lister плагин, 0.8.5.2 |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Wed Apr 06, 2011 19:52 Post subject: |
|
|
Ваще-то, UseIniInProgramDir содержит 3 бита: 1 для wincmd.ini, 2 для wcx_ftp.ini и 4 для игнора реестра.
У тотала настройки всех плагинов хранятся в одной папке, так что не такая это и большая проблема. Но согласен, для разных типов плагинов лучше иметь что-то более-менее общее. К слову, ничто не мешает (и никто не запрещает) тебе добавить свою секцию в wincmd.ini, в которой прописать путь к твоему конфигу. Тогда плагины всех типов будут иметь к нему доступ.
А насчет чтения COMMANDER_INI - если читаешь её, тогда читай всегда, не нужно ни с чем её сравнивать. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
Total7zip
Joined: 27 Nov 2010 Posts: 287
|
(Separately) Posted: Wed Apr 06, 2011 20:29 Post subject: |
|
|
мне все-таки больше нравится когда в портабл варианте конфиг лежит в папке с плагином.
например, посмотрел сейчас, у меня в папке с TC лежат от плагинов
jpg-comment.ini
ShellDetails.ini
visualdirsize.ini
и чего в этом хорошего?...
корче говоря, это просто фикс, для тех (странных пользователей), кто ставит TC в папку, в которой у них нет прав на запись. для тех, кого устраивал старый вариант ничего не поменялось =) _________________ Total7zip - архиваторный+content+lister плагин, 0.8.5.2 |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|