PDA

Показать полную графическую версию : Кнопка для работы с 7z SFX архивами.


Страниц : 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41

gora
17-12-2007, 00:10
У кнопки сегодня небольшой юбилей ;). Все начиналось здесь (http://forum.oszone.net/post-525864-298.html) :).

Юбилейное обновление кнопки. Изменения:
1 Обновлены внутренние утилиты. (благодарности Oleg_Sch)
2 Обновлен модифицированный модуль. (благодарности Oleg_Sch)
3 С целью уменьшения размера получаемого 7z SFX архива производится:
- дополнительное его "обрезание" (до 512б) без использования сжатия. (экспериментально)
- удаление комментариев из файла конфигурации. (опционально)
4 Изменен алгоритм выбора размера словаря при создании архива.
5 Предусмотрена возможность изменения степени использования оперативной памяти при создании архива через ini файл. (экспериментально)
6 Изменена информация выводимая перед созданием 7z архива.
7 Изменена информация выводимая после создания 7z SFX архива.
8 Удалена утилита вызывавшая ошибку отсутствия библиотеки MSVBVM50.DLL.
9 Удалена возможность изменения расширения файлов конфигурации и "копирайтов".
10 Немного уменьшен размер кнопки и инсталятора.

Jekson07
18-12-2007, 20:21
gora,
Столкнулся с такой проблемой, не могу понять из-за чего, это происходит. К примеру, у меня есть три папки, содержимое которых постоянно обновляется, по образу и подобию они практически идентичные. Если я создаю 7z архив, при нажатой клавише Shift и "Волшебной кнопки", то почему-то, именно с одной и той же папкой выскакивает ошибка что на скрине. С другими папками все без проблем отрабатывает. Интересно, что это за глюк и из-за чего такое может происходить?
С новой "Волшебной кнопкой" проблема разрешилась. Поздравляю всех с юбилейным обновлением. :beer:

FreeKnight
23-01-2008, 11:34
тоже присоединяюсь к Юбилейному выпуску, но... на сайте ссылки мертвы...дайте плиз кто-нить скачать

gora
23-01-2008, 11:48
на сайте ссылки мертвы »Не подтверждаю! Только что проверил - все скачалось (качал IE размер небольшой)!

FreeKnight
23-01-2008, 12:49
спасибо, все скачалось !!!

Anakin
19-02-2008, 12:37
gora, весьма заманчивая кнопка:) А можно сделать ее же, но для Windows Explorer?

gora
19-02-2008, 12:48
А можно сделать ее же, но для Windows Explorer? »Такой задачи не стояло. Я пользуюсь ТС и проводник мне не нужен. :) Возможно, сделать это кому то и удастся, но я этих заниматься не планирую.

Anakin
20-02-2008, 00:07
gora, хорошо, тогда опишите, пожалуйста, как сама кнопка (файл button.exe) взаимодействует с TC? Если я правильно понял из файла default.bar, он ей просто список файлов передает через командную строку (параметр %L)? Т.е. кнопку можно использовать и вне TC? А в каком формате этот список нужно передавать? Можно примерчик?:)

gora
20-02-2008, 08:32
он ей просто список файлов передает через командную строку (параметр %L)? »Да. Запуск происходит в "свернутом виде" и еще передается "путь запуска".А в каком формате этот список нужно передавать? »В кодировке Windows (1251). Два примера:F:\_ResPatch_All\_ResPatch_4_Poly\2_Selector\Selector.exe
F:\_ResPatch_All\_ResPatch_4_Poly\2_Selector\Selector.7z
F:\_ResPatch_All\_ResPatch_4_Poly\2_Selector\Selector.res
F:\_ResPatch_All\_ResPatch_4_Poly\2_Selector\Selector_config.txt

F:\_ResPatch_All\_ResPatch_4_Poly\2_Set_logo\Set_logo\AMD\
F:\_ResPatch_All\_ResPatch_4_Poly\2_Set_logo\Set_logo\Intel\
F:\_ResPatch_All\_ResPatch_4_Poly\2_Set_logo\Set_logo\Oeminfo1.cmd
F:\_ResPatch_All\_ResPatch_4_Poly\2_Set_logo\Set_logo\oemlogo.exe
F:\_ResPatch_All\_ResPatch_4_Poly\2_Set_logo\Set_logo\nircmdc.exe
F:\_ResPatch_All\_ResPatch_4_Poly\2_Set_logo\Set_logo\Oeminfo2.cmd

Anakin
20-02-2008, 08:51
gora, спасибо за информацию. И для полноты картины еще серия вопросов;)

1. "Путь запуска". Что это, как передается, до списка или после?
2. В списке для каждого файла надо указывать полный путь или можно только имя (если путь запуска - это и правда то, о чем подумал;))
3. Если указать каталог (как во 2-м примере), то файлы из этого каталога уже перечислять не надо?
4. Как передается информация, что надо запускаться в "свернутом виде"? А как же диалог с выбором варианта (скажем, сжатия архива или извлечения иконки)? И как тогда будет выглядеть "несвернутый вид"?:)
5. Правильно но ли я понимаю, что разделителем в списке файлов служит пробел, и если путь содержит пробелы, то его надо заключить в кавычки?
6. Как передать информацию о том, что еще в TC во время клика по кнопке была зажата клавиша Shift или Ctrl? Когда появился диалог, уже все понятно - кнопка отслеживает нажатия сама, а как быть до этого? Или тоже отслеживает кнопка? (ведь в момент щелчка по кнопке и запуску button.exe пользователь все еще держит клавишу зажатой;))

И пожалуйста, приведите еще один пример, на этот раз полный - допустим, пользователь выбрал все те же файлы и папки, что в примере 2 из пред. поста, зажав при этом Shift (хочет создать обычный 7z-архив). Как будет выглядеть полная командная строка вызова утилиты (и с путем запуска и индикатором клавиши, если нужно)?

Заранее благодарю за ответы! Если все сложится удачно (т.е. пноа взаиодмейтсвует с окружающей средой стандартным образом, не используя никаких спец. примочек TC), то на выходных наверное появится "волшебное меню" для Проводника Windows - кнопку там, увы не вставишь (:(), а вот доп. пункт в контекстное меню - запросто!:)

gora
20-02-2008, 09:19
1 Путь запуска - это путь к файлу Button.exe. У меня, например, это D:\totalcmd\Utilites\SFX Tool, в бат файлах это переменная %CD%, наверное так понятнее будет.
2 Только полный путь! Примеры приведены реальные которые формирует ТС.
3 Я же привел примеры того, что передает ТС. Он передает только пути\имена папок со слешем в конце и не раскрывает их содержимого.
4 Адрес к файл-списку (примеры которых я привел) ТС передает в как единственную переменную, в бат файлах это переменная %1, файлу Button.exe и запускает его в свернутом виде. Про диалоги не беспокойтесь они отработают как надо. :)
5 Извините, забыл привести такой вариант. Вот что передает ТС в этом случае:D:\DISTRIBUT\Punto Switcher\новые правила переключения\
D:\DISTRIBUT\Punto Switcher\setup_ps295.exe
D:\DISTRIBUT\Punto Switcher\setup_ps295_0.exe
D:\DISTRIBUT\Punto Switcher\setup_ps29.exe
D:\DISTRIBUT\Punto Switcher\setup_ps28.exe Как видите кавычек нет ни в путях, ни в названиях.
6 Нажатие спец. клавиш ТС не отслеживает и не передает кнопке. Она это делает сама после запуска Button.exe.
По-моему, я достаточно подробно расписал все что и как передается кнопке и что она определяет сама. Если еще будут вопросы - отвечу.
Удачи, Вам.

Anakin
20-02-2008, 15:22
gora, что-то не выходит. Раскладка такая: кнопка распакована по адресу C:\Documents and Settings\svliverk\My Documents\SFX Tool, в этом каталоге лежат файлы

7ZSD_LZMA.sfx
7ZSplit.exe
Button.bat
Button.exe
Desktop.ini
Files.txt
Settings.ini
setup_button.exe (это инсталлятор кнопки, перемещн сюда для опытов, о них как раз речь ниже)
Upack.exe

Файл Button.bat - следующего содержания:

cd C:\SFX Tool
Button.exe Files.txt

а Files.txt - такой:

C:\SFX Tool\setup_button.exe


В конце Files.txt - пустая строка, как и сам TC генерирует.

И вот теперь я запускаю Buttin.bat (никаких клавиш не зажимаю). Поскольку setup_button.exe является 7zSFX-архивом, то я ожидаю, что появится окно с предложением либо извлечь компоненты из архива, либо просмотреть файл конфигурации. Вместо этого я вижу мелькающее на секунду консольное окно с заголовком 7zSFX_Button_TC (рассмотреть трудно, все слишком быстро).. и все. Ни диалога с сообщением об ошибке, ни ожидаемого диалога - молчок:( Та же ситуация, если в Files.txt указать файл C:\SFX Tool\setup_button.exe и запустить с зажатой Ctrl - тоже мигнувшее окно и тишина, хотя должно быть предложение извлечь иконку.

Продолжаем опыты. Пытаемся запустить button.exe напрямую, без bat-файла - получаем сообщение об ошибке, что в активной панели нет выделенных файлов. Это ожидаемо, ведь файла-параметра не передано.

Наконец, запускаю Button.bat с нажатым Shift-ом - хочу создать обычный 7z-архив. Ура, появляется диалог с выбором типа архива (solid, non-solid, без сжатия). Вот только смущает, что размер выделенных файлов равен 0, а количество - 1 (так в диалоге сказано), хотя указаны все файлы из папки. Жму "Да", не нажимая доп-но никаких клавиш - появляется диалоговео окно с ошибкой 7-Zip "Incorrect item in listfile":(

Что я делаю не так?

P.S.: В файле settings.ini все пути прописаны, даже без использования всяких переменных, а конкретно:

; ------------- File of options -------------
;
; Path to the sfx module
pathModule=C:\SFX Tool\7ZSD_LZMA.sfx
; Path to the spliter
pathSpliter=C:\SFX Tool\7ZSplit.exe
; Path to the UPX
;pathUPX=!COMMANDER_PATH!\Utilites\SFX Tool\upx.exe
pathUPX=C:\SFX Tool\Upack.exe
; Path to the archiver 7-Zip
path7Zip=C:\Program Files\7-Zip\7zG.exe

gora
20-02-2008, 16:38
Anakin, так наверное дело в том, что путь файлам кнопки C:\Documents and Settings\svliverk\My Documents\SFX Tool(как Вы пишите), а Вы прописали в ini файле совсем другое pathModule=C:\SFX Tool\7ZSD_LZMA.sfx »Пропишите пути правильно!

Anakin
20-02-2008, 16:47
gora, это ошибка в посте - я написал первую строчку, потом режил проверить на более простом пути, проверил, потом вернулся в браузер и дописал пост, а эта строка так и осталась. Нет, кнопка лежит по адресу C:\SFX Tool\.

P.S.: Я все таки не понял, как сама кнопка использует путь запуска. Она его из переменой окружения какой-то считывает?

P.P.S.:Есть смутное подозрение, что для интеграция в Проводник нужна правка сырцов, по крайней мере, в части приема исходных данных. Но хотелось бы разобраться, что с exe-файлом. Может, кнопка результат кидает куда-то во временную папку, посколько не из-под TC?

gora
20-02-2008, 17:30
Anakin, дома проверю, что у Вас не так, отпишусь. Но лучше давать точные данные, что бы мне не приходилось "предвидеть", что у Вас написано, а что у Вас в уме. ;)

PS А разве путь с пробелами не нужно заключать в кавычки!? cd C:\SFX Tool »

PPS
Попробовал разобраться в вашей ситуации и установил следующее:
1 Путь к файл списку Files.txt в команде Button.exe должен быть указан полный (C:\SFX Tool\Files.txt)!
2 Этот путь НЕДОЛЖЕН содержать пробелов и кавычки в данном случае не помогают! Кнопка разрабатывалась исключительно под ТС, а он этот путь к файл списку имеет беспробельный! Это я думаю можно будет исправить потом, а пока используйте беспробельный путь к файл списку.
3 В остальных путях/именах можно использовать пробелы заключая их в кавычки по общепринятым правилам. Но я бы рекомендовал при написании своей программы избегать их и потом, после написания ее, вводить их постепенно не устраивая стресс тестов еще на начальной стадии.

Anakin
21-02-2008, 19:56
gora, спасибо за подсказки - так все функции работают!!! Теперь возьмусь за написание самой DLL-ки. Вот только версия splitter'а у вас в инсталляторе устарела - новые аддоны, собранные с 7zSFX (например, Daemon Tools 4.12) распаковать только вашим не получится, надо указать путь к новой версии "расчленителя":)

Вопрос по поводу раскладки диалоговых окон на экране: а можно модернизировать алгоритм их отображения, чтобы не играться с параметром в seetings.ini? Скажем, сначала вычилить по файлу конфигурации кол-во окон, их габариты, потом просчитать координаты их левых верхних углов на экране, исходя из текущего разрешения, а уж потом - вывести?;)

gora
21-02-2008, 21:08
Вот только версия splitter'а у вас в инсталляторе устарела »
В кнопке используется последняя версия сплитера от Oleg_Sch, а уж он как ни кто знает как устроены 7z SFX архивы на базе его модифицированного модуля. :)7zSFX (например, Daemon Tools 4.12) распаковать только вашим не получится »Я не знаю, что там за архив (не использую данный аддон), но если Вы уверены, что это именно 7z SFX архив и сделан на базе модифицированного модуля, то можете написать в ветку Oleg_Sch (ссылка в шапке). новой версии "расчленителя" »Таковой не знаю (приводите название, ссылку) и не собираюсь пока ни чего менять.а можно модернизировать... »Давайте так, сначала Вы сделаете свою программу и покажете как она работает, а уж потом будем обсуждать возможность и целесообразность переделки кнопки под ваши вкусы/потребности.

PS Посмотрел я аддон Daemon Tools 4.12. Там всего 5 ехе файлов. Три из них 7z SFX архивы (DTools.exe, DTShEx.exe, INSTDT.exe) прекрасно извлекаются кнопкой, а два (daemon4120-lite.exe, awxDTools.exe) таковыми не являются! Кнопка их и НЕ должна извлекать! Ваши претензии не обоснованы!

Anakin
26-02-2008, 17:12
ALL

Потратив около недели времени я решил прекратить работу над Explorer-версией кнопки - так как Windows Explorer в силу своего внутреннего устройства сводит на нет многие преимущества кнопки. В частности, клик с зажатой клавишей Ctrl по пункту контекстного меню заставляет программу запуститься на заднем плане (это общее правило Проводника, так задумано в Windows и обойти нельзя) - т.е. при извлечении иконки кнопкой надо дополнительно нажимать Alt-Tab, чтобы диалог с вариантами вывелся на передний план. Да и непосредственно кнопку, как я писал, встроить в тулбар нельзя - только в контекстное меню, а это уже добавочный клик на каждую операцию.

Поэтому я решил, что эффективнее в плане времени и трудозатрат будет сделать специальную Archive-версию Total Commander, которая предназначена для тех, кто использует в качестве основного менеджера Проводник, а TC - преимущественно из-за кнопки;), т.е. полновесный TC PowerPack со всеми плагинами совершенно без надобности). Такая сборка и была успешно собрана, обкатана на создании порядка 60 тихих 7zSFX инсталляторов для программ, и в скором времени (надеюсь:)), будет трансформирована в аддон и выложена на форуме. Там же будет поддержка еще некоторых архивов;), который стандартный WinRAR не распознает.

В процессе работы с кнопкой появилась одна идея: а что если при извлечении одной иконки с размерами 16 и 32 (вариант с зажатым Shift-ом), не сохранять в файле форматы для всех имевшихся разрядов цветности, а оставлять только максимальный? В итоге всегда будет не больше 2 форматов (скажем, 16x16 RGBA и 32x32 256, если конечно 32x32 RGBA отсутствует). Также, возможно, стоит рассмотреть вариант 16+32+48, если модифицированный модуль, конечно, поддерживает формат 48x48 - тогда файл инсталлятора будет аккуратно отображаться в режиме "Плитка", а не интерполировать иконку 32x32:)

NeSkoda
27-02-2008, 02:01
А можно-ли научить кнопку ставиться в тотал на Vistа? При установке из под тотала пишет:7-zip внутренняя ошибка.Код ошибки 106.

gora
29-02-2008, 12:20
А можно-ли научить кнопку ставиться в тотал на Vistа? При установке из под тотала пишет:7-zip внутренняя ошибка.Код ошибки 106. »Эта ошибка возникает при невозможности записи файла. Сам Висту не использую, но видимо она не дает Вам записывать файлы, не хватает прав. С этим вопросом (о правах в Висте) Вам придется разбираться самостоятельно, я здесь не помощник. ;(
Могу посоветовать попробовать извлечь необходимые файлы кнопки из дистрибутива и установить их "вручную", а потом создать кнопку на панели ТС. Код кнопки Вы найдете на страничке по ссылке в шапке. Будут вопросы по ручной установке, отвечу.




© OSzone.net 2001-2012