TC4Shell - использование WCX плагинов в Проводнике
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Программное обеспечение

#1: TC4Shell - использование WCX плагинов в Проводнике Author: Dec PostPosted: Tue Aug 05, 2014 02:35
    —
(Я понимаю, что для местной аудитории это не особо актуально, но тем не менее) Представляю сообществу программу TC4Shell, которая интегрируется с Windows и позволяет открывать различные архивы в программе Проводник с использованием библиотеки 7z и любых WCX плагинов (поддерживается полноценная работа 32-битных WCX в 64-битной среде).

После того как вы скачаете инсталлятор TC4Shell и запустите его, он предложит вам выбрать расширения файлов, которые вы сможете открывать в Проводнике. Не зависимо от выбора любые ассоциации можно изменить в дальнейшем в диалоге свойств файла. После удачной установки появится соответствующее сообщение.

Плагин добавляет в контекстное меню файла три команды:

1) Упаковать - позволяет упаковать файл или файлы.
2) Открыть в этом окне - появляется только для архивов.
3) Открыть в новом окне - появляется только для архивов.

Для инсталляции WCX плагина нужно его скачать и открыть в проводнике. Если WCX плагин упакован в ZIP архив, то нужно просто открыть ZIP-файл в проводнике (ZIP архивы можно открыть в Проводнике в Window по умолчанию средствами самой Windows). TC4Shell сам определит наличие WCX плагина в архиве и предложит установить его.

Если же WCX плагин упакован в RAR архив, то сначала нужно научить Проводник открывать RAR. Если выбрать в Проводнике RAR файл, то TC4Shell сам предложит добавить возможность открытия RAR архивов в Проводнике. Утвердительный ответ включит эту функциональность. Затем нужно зайти в архив (команды Открыть в xxx окне). TC4Shell сам определит наличие WCX плагина в архиве и предложит установить его.

В дальнейшем работа с архивами будут выглядеть также, как и работа с обычными папками. Поддерживаются все стандартные операции Windows, такие как копирование, вставка (если плагин допускает модификацию), drag&drop.

Буду рад любым комментариям.

#2:  Author: aLLigatorLocation: из тех ворот, что и весь народ... PostPosted: Sat Aug 16, 2014 17:54
    —
Спасибо, возможно будет полезно.
Пока только попробовал, особо не разбирался с функционалом, но уже возникло пару вопросов:
1. Почему отсутствуют иконки файлов внутри архивов?
2. Почему у программы более высокий приоритет на открытие файла при работе в ТС? т.е. почему в ТС при открытии файла (я тестировал на АРК) открывается проводник, а не настроенная внутренняя ассоциация.

#3:  Author: Dec PostPosted: Sat Aug 16, 2014 18:00
    —
aLLigator wrote:
1. Почему отсутствуют иконки файлов внутри архивов?
Выложи, пож-та, скриншот.

aLLigator wrote:
2. Почему у программы более высокий приоритет на открытие файла при работе в ТС? т.е. почему в ТС при открытии файла (я тестировал на АРК) открывается проводник, а не настроенная внутренняя ассоциация.
TC4Shell никак не связан с работой TC, поэтому этот вопрос нужно адресовать к автору ТС.

#4:  Author: aLLigatorLocation: из тех ворот, что и весь народ... PostPosted: Sun Aug 17, 2014 12:33
    —
Dec wrote:
Выложи, пож-та, скриншот.

Один и тот же файл открыт в Проводнике и ТС



P.S. Ещё замечено, что на моей winXPx32 после установки программы Проводник стал жутко тормозить.
Любое окно Проводника открывается не меньше минуты, после удаления же программы стало привычных пару секунд.

#5:  Author: Dec PostPosted: Sun Aug 17, 2014 16:33
    —
aLLigator wrote:
Один и тот же файл открыт в Проводнике и ТС

Прикольнинько. Эта что за плагин?

aLLigator wrote:
на моей winXPx32 после установки программы Проводник стал жутко тормозить.
Буду оптимизировать.

#6:  Author: aLLigatorLocation: из тех ворот, что и весь народ... PostPosted: Sun Aug 17, 2014 21:17
    —
Dec wrote:
Эта что за плагин?

По идее APK это обычный ZIP формат.
Где бы его глянуть что за плагин берет программа для его открытия?

#7:  Author: Dec PostPosted: Sun Aug 17, 2014 22:53
    —
aLLigator wrote:
на моей winXPx32 после установки программы Проводник стал жутко тормозить.
Обновил программу. Теоретически тормоза должны исчезнуть.

aLLigator wrote:
Где бы его глянуть что за плагин берет программа для его открытия?
Предполагаю, что это IEView.

#8:  Author: FlasherLocation: Москва PostPosted: Wed Nov 11, 2015 01:30
    —
Ставил как-то на Win7 x32, не заработала. Сейчас скачал по новой - то же самое. Скажем, при попытке открыть 7z-архив происходит то же, что и до установки.

#9:  Author: Dec PostPosted: Wed Nov 11, 2015 08:02
    —
Что подразумевается под открытием? Открытие 7z-файла в Explorer или TC? Что происходит при попытке открытия 7z-файла? Чем открывались 7z-файлы до установки TC4Shell?

#10:  Author: FlasherLocation: Москва PostPosted: Wed Nov 11, 2015 08:40
    —
Dec, такие вопросы уместны для новичка, у которого при всём при этом проблемы с прочтением стартового поста.
7z открывались до того момента всегда в ТС, вряд ли этот ответ изменит ситуацию.
Под фразой "до установки" подразумевалось событие "по-умолчанию", скажем, при попытке открытия сразу после установки ОС.
Тут важно другое отметить. Вот этого момента не происходит:
Dec wrote:
он предложит вам выбрать расширения файлов

#11:  Author: Dec PostPosted: Wed Nov 11, 2015 09:15
    —
Первый пост частично потерял свою актуальность. Сейчас инсталлятор не предлагает установить ассоциации при установке. Открытие 7z как папок в можно включить двумя способами.

1) В Проводнике выбрать 7z файл. В проводнике появится вот такое предложение:



Если нажать на Да, то ассоциация будет произведена.

2) В окне свойств 7z файла файла на вкладке Навигация включить галку напротив нужного плагина и нажать OK:



TC4Shell не меняет ранее установленные ассоциации, если по умолчанию при запуске 7z открывался, например, WinRar, то WinRar и будет запускаться. В этом случае открыть 7z в Проводнике можно через контекстное меню. Если ассоциаций не было, то открытие 7z приведет к открытию Проводника, в котором будет открыт 7z файл.

#12:  Author: FlasherLocation: Москва PostPosted: Wed Nov 11, 2015 09:43
    —
Dec
Сейчас перезагрузился, увидел всплывающее окно.
Т.е. каждое расширение нужно вот таким образом ассоциировать?
Лучше всё-таки сопоставлять группой, чтобы один раз и забыть, особенно, если аддон ставить на чужие машины (в основном для этого и нужно). Есть смысл GUI-шный настройщик сопоставлений написать.

#13:  Author: Dec PostPosted: Wed Nov 11, 2015 09:47
    —
Flasher wrote:
Лучше всё-таки сопоставлять группой
Обдумаю.

#14:  Author: Dec PostPosted: Sun Jan 03, 2016 17:34
    —
Flasher wrote:
Лучше всё-таки сопоставлять группой, чтобы один раз и забыть.
Сделал.

#15:  Author: FlasherLocation: Москва PostPosted: Sun Jan 03, 2016 19:47
    —
Гуд. А где в списке 00(1-X), a, ar, chi, chq, chw, doc, docx, epub, esd, exe, ext, ext2, ext3, ext4, fat, hfsx, hxr, hxq, hxw, jar, lib, lit, mbr, mub, msi, msp, nsis, ntfs, odt, ods, pkg, ppmd, ppt, qcow, qcow2, qcow2c, r00, scap, swm, taz, tbz, tbz2, tgz, txz, udf, uefif, xls, xlsx, xpi, zipx, z?
И я бы снял галки с flv и chm.

#16:  Author: Dec PostPosted: Sun Jan 03, 2016 20:42
    —
Flasher wrote:
А где в списке ...?
Спасибо за список, по изучаю.

Flasher wrote:
И я бы снял галки
Если установщик ставит галку включенной, то это по его мнению безопасная операция.

#17:  Author: FlasherLocation: Москва PostPosted: Sun Jan 03, 2016 20:51
    —
Dec wrote:
то это по его мнению безопасная операция
Эмм. А как установщик без составителя может решать такие вещи?

#18:  Author: Dec PostPosted: Sun Jan 03, 2016 21:02
    —
Flasher wrote:
Эмм. А как установщик без составителя может решать такие вещи?
Если после установки ассоциации изменится поведение уже установленных в системе компонент - то операция опасна. Иначе безопасна. Как то так.

#19:  Author: FlasherLocation: Москва PostPosted: Sun Jan 03, 2016 21:09
    —
Ну, так очевидно, что chm по-умолчанию открывается системным hh.exe. Где же тут соблюдена "безопасность"?
В моём случае это и flv касается.

#20:  Author: Dec PostPosted: Sun Jan 03, 2016 21:15
    —
Flasher wrote:
Ну, так очевидно, что chm по-умолчанию открывается системным hh.exe. Где же тут соблюдена "безопасность"?
Ну так и после установки ассоциации chm будет по-умолчанию открывается системным hh.exe. Для открытия в Проводнике есть команда контекстного меню "Открыть в этом окне".

#21:  Author: FlasherLocation: Москва PostPosted: Sun Jan 03, 2016 21:18
    —
А какой тогда смысл списка, если весь он будет открываться только через контекстное меню? Confused

#22:  Author: Dec PostPosted: Sun Jan 03, 2016 21:37
    —
Flasher wrote:
А какой тогда смысл списка, если весь он будет открываться только через контекстное меню? Confused
Смысл примерно следующий. После регистрации файлы типа 7z, для которых в системе нет ассоциированной программы, будут открываться по умолчанию Проводником, а файлы типа chm, для которых в системе есть ассоциированная программа, будут по прежнему открываться в ассоциированной программе, но будет и возможность открыть файл как архив в Проводнике через команду контекстного меню.

#23:  Author: FlasherLocation: Москва PostPosted: Sun Jan 03, 2016 21:41
    —
Считаю, такой подход не совсем верным с учётом исходного назначения программы. Правильней было бы иметь возможность открывать весь список через ПКМ, а отмеченное по Enter. Иначе прямой смысл файловых ассоциаций теряется.
При этом было бы логично, чтобы отмечены были все архивные расширения и те, что ещё не ассоцированы.

#24:  Author: Dec PostPosted: Sun Jan 03, 2016 21:51
    —
Flasher wrote:
Считаю, такой подход не совсем верным
Проблема состоит в том, что регистрация TC4Shell в системе и регистрация любой другой программы очень разные. Регистрация TC4Shell - это регистрация namespace shell extension, что накладывает множество ограничений. В частности, невозможно открыть произвольный файл в Проводнике без установки соответствующей ассоциации (которая, напомню, физически отличается от регистрации ассоциации расширения файла к стандартному приложению).

#25:  Author: FlasherLocation: Москва PostPosted: Sun Jan 03, 2016 22:06
    —
Dec wrote:
без установки соответствующей ассоциации
А чем установка ассоциации установщиком отличается от установки ассоциации программой через запрос? Разве это нельзя совместить?

#26:  Author: Dec PostPosted: Sun Jan 03, 2016 22:09
    —
Flasher wrote:
Dec wrote:
без установки соответствующей ассоциации
А чем установка ассоциации установщиком отличается от установки ассоциации программой через запрос? Разве это нельзя совместить?
Не понял вопрос.

#27:  Author: FlasherLocation: Москва PostPosted: Sun Jan 03, 2016 22:24
    —
Ну, всплывающее предложение при установке на годном файле ассоцирует аналогично системной привязке? Или аналогично установщику по namespace shell?

Не нужно цитировать предыдущие посты. И так понятно, к чему ответ.

#28:  Author: Dec PostPosted: Sun Jan 03, 2016 22:28
    —
В всплывающем предложении и установщике используется один и тот же механизм установки ассоциаций - ассоциация расширения файла к namespace shell extension.

#29:  Author: FlasherLocation: Москва PostPosted: Sun Jan 03, 2016 22:33
    —
Понятно. Жаль.

#30:  Author: FlasherLocation: Москва PostPosted: Fri Sep 02, 2016 18:58
    —
Dec
А есть возможность подцепить архивы без расширений? В скрипте их можно проверять по IsFolder.

#31:  Author: Dec PostPosted: Fri Sep 02, 2016 19:05
    —
К сожалению, система файловых ассоциаций Windows не позволяет таких трюков. Попробуйте ассоциировать файл без расширения с любым приложением, у меня не получилось.

#32:  Author: FlasherLocation: Москва PostPosted: Fri Sep 02, 2016 19:14
    —
Code:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\_file]
@=" file"

[HKEY_CLASSES_ROOT\_file\shell]
@="open"

[HKEY_CLASSES_ROOT\_file\shell\open\command]
@="notepad.exe \"%1\""

[HKEY_CLASSES_ROOT\.]
@="_file"

#33:  Author: Dec PostPosted: Fri Sep 02, 2016 19:38
    —
Хороший аргумент. Но сейчас я не готов ставить такие эксперименты с TC4Shell, слишком много кода надо менять. Буду по свободнее, займусь.

#34:  Author: FlasherLocation: Москва PostPosted: Fri Sep 02, 2016 19:41
    —
ОК. Пост можно править 30 дн. Поэтому желательно уложиться.

Добавлено спустя 28 минут:

Пытался сейчас скормить dz (gzip) - не получилось. Как правильно?
 dz.reg

#35:  Author: Dimsok PostPosted: Fri Sep 02, 2016 20:24
    —
Я пытался архивировать словари в gzip, а потом менять расширение на dz. И такие файлы Goldendict не читает. Оказывается, не чистый gzip это, что-то там намудрили.

#36:  Author: FlasherLocation: Москва PostPosted: Fri Sep 02, 2016 20:26
    —
Хм. Но 7z-то их читает.

#37:  Author: Dec PostPosted: Fri Sep 02, 2016 21:06
    —
Flasher wrote:
Пытался сейчас скормить dz (gzip) - не получилось. Как правильно?
Правильно через диалог свойств файла, вкладка Навигация. Но если хочется ручками, то посмотри еще, как устроен раздел HKEY_CURRENT_USER\Software\Dec Software\TC4Shell\Extensions\.gz

#38:  Author: FlasherLocation: Москва PostPosted: Fri Sep 02, 2016 21:18
    —
А. ещё это
Code:
[HKEY_CURRENT_USER\Software\Dec Software\TC4Shell\Extensions\.dz]
"0"="7Z.gzip"
ОК. Спасибо.

#39:  Author: FlasherLocation: Москва PostPosted: Sat Sep 03, 2016 13:03
    —
Dec
После реги при заходе в файл вижу промежуточную папку c:. Confused

#40:  Author: Dec PostPosted: Sat Sep 03, 2016 17:12
    —
Это нормально, в архиве содержится полное имя файла включая путь. Картинка.

#41:  Author: FlasherLocation: Москва PostPosted: Sat Sep 03, 2016 17:32
    —
Если бы. ТС открывает такие файлы как следует.

#42:  Author: Dec PostPosted: Sat Sep 03, 2016 17:37
    —
А почему игнорирование пути, который записан в архив, является вариантом "Как следует"? Или это "Как следует" только для GZ, а для 7Z уже не "Как следует"? Каковы критерии? Кстати, сам 7Zip тоже показывает путь.

#43:  Author: FlasherLocation: Москва PostPosted: Sat Sep 03, 2016 17:46
    —
Тотал так открывает этот архив без плагинов, в т. ч. если поменять расширение на zip. Если брать Total7zip, то он тоже без c: открывает. Это касается и листинга по 7z.exe l.

#44:  Author: Dec PostPosted: Sat Sep 03, 2016 17:52
    —
А вот 7Zip открывает с C:. И кому верить? Я лично больше доверяю 7Zip.

#45:  Author: FlasherLocation: Москва PostPosted: Sat Sep 03, 2016 18:23
    —
Вообще да. dictzip -l даёт полный путь. 7z.exe, кстати, тоже. Я просто до этого тестировал такие архивы без пути. Не знал, что словари ещё и в подпапки пакуют (может, по глупости). Думал, это баг какой-то.
Вот почему Тотал так открывает, неясно.

Добавлено спустя 39 минут:

Я так понял, что Тотал игнорирует компонент пути, который содержит запрещённый в именах знак ':', т.е. остальную часть пути он отображает верно.

#46:  Author: FlasherLocation: Москва PostPosted: Thu Jan 19, 2017 19:02
    —
Dec
Какие мысли по поводу того, что метод CopyHere не работает между архивами?
Code:
Set Arch1 = ShA.NameSpace("C:\Test.zip")
Set Arch2 = ShA.NameSpace("C:\Test.7z")
Set Items = Arch1.Items
ShA.NameSpace(Arch2).CopyHere Items

#47:  Author: Dec PostPosted: Thu Jan 19, 2017 19:04
    —
Flasher
Опиши пож-та всю процедуру, как я могу протестировать приведенный код.

#48:  Author: FlasherLocation: Москва PostPosted: Thu Jan 19, 2017 19:08
    —
Dec
Пути к архивам видно? Вот они должны существовать (можно заменить на свои, но с разными типами или именами). Дальше просто запустить vbs.

#49:  Author: Dec PostPosted: Thu Jan 19, 2017 19:17
    —
Flasher
Я не являюсь специалистом в vbs, иначе бы не спрашивал. Я не понимаю термина "запустить vbs".

Я предполагаю, что дело в том, что destination архив получает на вход виртуальные объекты. А пока TC4Shell умеет паковать только физические файлы. У меня есть в планах это исправить.

#50:  Author: FlasherLocation: Москва PostPosted: Thu Jan 19, 2017 19:22
    —
Dec
Для запуска файлов специалистом быть не надо. Smile Запуск - это Enter на файле с расширением vbs, куда записан код.
Dec wrote:
У меня есть в планах это исправить.
Хм. Подождём.

#51:  Author: FlasherLocation: Москва PostPosted: Fri Jan 20, 2017 16:56
    —
Dec
А почему при подобных обращениях в папку %Temp% на Win7 попадает пустая "TC4Shell", а на XP нет?

#52:  Author: Dimsok PostPosted: Fri Jan 20, 2017 17:50
    —
При ассоциации файлов, есть ли возможность оставить открытие в TC по умолчанию? Т.е входить в архив по двойному клику.

#53:  Author: FlasherLocation: Москва PostPosted: Fri Jan 20, 2017 17:52
    —
Dimsok
Если у тебя в ТС есть привязка к плагинам, то ими в ТС всё и откроется.

#54:  Author: Dec PostPosted: Fri Jan 20, 2017 17:54
    —
Flasher wrote:
Dec
А почему при подобных обращениях в папку %Temp% на Win7 попадает пустая "TC4Shell", а на XP нет?
Не готов ответить, надо дебажить. Сейчас не до этого.

#55:  Author: Dec PostPosted: Sun Mar 12, 2017 14:54
    —
Flasher
Я обновил TC4Shell. Ключевое изменение - возможность открытия любых файлов как архивов. Возможно, для тебя, как любителя всякой автоматизации, это будет интересно. Если физическое имя файла c:\path\file.ext, то для программного обращения к этому файлу как к папке нужно использовать виртуальный путь ::{C1020799-8F0E-4196-90CE-FC03238F5950}\c:\path\file.ext?

#56:  Author: FlasherLocation: Москва PostPosted: Sun Mar 12, 2017 15:08
    —
Dec
Честно говоря, не понял взаимосвязь открытия любых файлов с тем, что мы обсуждали выше.
И под любыми, я полагаю, стоит понимать те, что поддерживаются, но могут иметь ложные расширения? Не поклонник испытывать таким образом судьбу в скриптах. Лучше уж проверять реально поддерживаемое, иначе придётся перекапывать все файлы вместо отфильтрованных.

#57:  Author: Dec PostPosted: Sun Mar 12, 2017 15:20
    —
Flasher
Quote:
не понял взаимосвязь

Ее нет.

Quote:
под любыми, я полагаю, стоит понимать те, что поддерживаются, но могут иметь ложные расширения?
Да, если я правильно понял эту формулировку. Такой же алгоритм, как у 7Zip.

(Я не знаю, как именно ты используешь TC4Shell в своих скриптах.) Вот потребовалось тебе работать с расширением AAA, которое реально ZIP. В старой версии перед работой скрипта начала нужно установить ассоциацию между TC4Shell и AAA. В новой версии можно просто обратиться по виртуальному пути. Это просто дополнительная возможность новой версии TC4Shell. Сегодня не нужна, завтра может понадобиться.[/quote]


Last edited by Dec on Sun Mar 12, 2017 15:32; edited 1 time in total

#58:  Author: FlasherLocation: Москва PostPosted: Sun Mar 12, 2017 15:28
    —
Dec
Взаимосвязи нет. Но что насчёт указанных планов исправить?

А открывать 'ААА' сомневаюсь, что когда-то понадобится.

#59:  Author: Dec PostPosted: Sun Mar 12, 2017 15:32
    —
Flasher
Quote:
Но что насчёт указанных планов исправить?

Это огромная работа, ее за один день не сделать. Могу сказать только что планы есть.

Ну и понятно, что ААА - это абстрактное расширение. Как реальный пример - расширение exe, которое нельзя ассоциировать с TC4Shell. Но программно можно получить доступ к этому exe как к папке через виртуальный путь.

#60:  Author: FlasherLocation: Москва PostPosted: Sun Mar 12, 2017 15:49
    —
Dec wrote:
ее за один день не сделать
Ну, об этом и не вчера писалось.
Dec wrote:
Как реальный пример - расширение exe, которое нельзя ассоциировать с TC4Shell.
Вот те раз. А чего так? Я даже и не думал, что такого очевидного расширения и нет.

#61:  Author: Dec PostPosted: Sun Mar 12, 2017 16:01
    —
Quote:
Ну, об этом и не вчера писалось.
У меня есть список более приоритетных проблем. Плюс требуемая тобой функциональность ломает очень много кода. Объем кода TC4Shell сейчас составляет 367000 строк. И мне потребуется много времени, что бы (образно) начала поломать, потом восстановить старый функционал с учетом изменений архитектуры проекта, потом все это протестировать.

Quote:
А чего так?
Если установить ассоциацию с exe, то начиная с Vista становится невозможно запустить exe на выполнение.

#62:  Author: FlasherLocation: Москва PostPosted: Sun Mar 12, 2017 16:06
    —
Dec wrote:
требуемая тобой функциональность ломает очень много кода
Разве я где-то требовал? О своих планах ты сам обмолвился. Я лишь уточняю.
Dec wrote:
то начиная с Vista становится невозможно запустить exe на выполнение
А в чём причина? Есть же подвязка только ко входу из меню, а не по Enter/даблклик. C msi, например, такой проблемы нет.

#63:  Author: Dec PostPosted: Sun Mar 12, 2017 16:18
    —
Не совсем так. При установке ассоциаций указывается, что расширение является папкой. XP игнорирует это, а Vista+ считает этот факт более приоритетным, и начинает открывать exe как папки.

#64:  Author: FlasherLocation: Москва PostPosted: Sun Mar 12, 2017 16:21
    —
Так почему msi не открывает по Enter как папки, а через меню без проблем? Чем exe от них по сути отличается?

#65:  Author: Dec PostPosted: Sun Mar 12, 2017 16:28
    —
Не могу объяснить. Имею факт - в Vista+ есть проблема с расширением exe. Поэтому я заблокировал возможность установки ассоциации exe с TC4Shell.

#66:  Author: FlasherLocation: Москва PostPosted: Sun Mar 12, 2017 16:32
    —
А можешь привести reg, с которым по логике exe-шник должен открываться только из меню? Хочу на 7-ке проверить.

#67:  Author: Dec PostPosted: Sun Mar 12, 2017 17:04
    —
Восстанавливал по коду и записям реестра для расширения EXE2, но вроде бы ничего не забыл:

Code:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\.EXE]
"PerceivedType"="compressed"

[HKEY_CURRENT_USER\Software\Classes\.EXE\OpenWithProgids]
"TCArchive.EXE"=""

[HKEY_CURRENT_USER\Software\Classes\TCArchive.EXE]
@="EXE Executable"

[HKEY_CURRENT_USER\Software\Classes\TCArchive.EXE\CLSID]
@="{B1BE3C6B-25E2-47DE-8AB9-878FCA3CD01A}"

[HKEY_CURRENT_USER\Software\Classes\TCArchive.EXE\DefaultIcon]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
  00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,7a,00,69,00,\
  70,00,66,00,6c,00,64,00,72,00,2e,00,64,00,6c,00,6c,00,00,00

[HKEY_CURRENT_USER\Software\Classes\TCArchive.EXE\Shell]

[HKEY_CURRENT_USER\Software\Classes\TCArchive.EXE\Shell\Open]

[HKEY_CURRENT_USER\Software\Classes\TCArchive.EXE\Shell\Open\Command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
  00,5c,00,45,00,78,00,70,00,6c,00,6f,00,72,00,65,00,72,00,2e,00,65,00,78,00,\
  65,00,20,00,2f,00,69,00,64,00,6c,00,69,00,73,00,74,00,2c,00,25,00,49,00,2c,\
  00,25,00,4c,00,00,00
"DelegateExecute"="{11DBB47C-A525-400B-9E80-A54615A090C0}"

[HKEY_CURRENT_USER\Software\Classes\TCArchive.EXE\shellex]

[HKEY_CURRENT_USER\Software\Classes\TCArchive.EXE\shellex\ContextMenuHandlers]

[HKEY_CURRENT_USER\Software\Classes\TCArchive.EXE\shellex\ContextMenuHandlers\{9EE0C3EF-C379-4FED-B2A8-651BB61F5C0F}]
"{9EE0C3EF-C379-4FED-B2A8-651BB61F5C0F}"=""

#68:  Author: FlasherLocation: Москва PostPosted: Sun Mar 12, 2017 18:45
    —
Вообще не выходит подвязать откытие exe как архива. Добавлял ещё
Code:
[HKEY_CURRENT_USER\Software\Dec Software\TC4Shell\Extensions\.exe]
"0"="7Z.7z"
"1"="Unrar"
"2"="7Z.Pe"
, но толку 0. Только распаковка из меню работает. И насколько я понимаю, ковырять нужно:
Code:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile

#69:  Author: Dec PostPosted: Sun Mar 12, 2017 18:51
    —
Чуть позднее проверю на виртуалке и отпишусь.

#70:  Author: Dec PostPosted: Mon Apr 10, 2017 01:01
    —
Flasher
Научил TC4Shell упаковывать виртуальные объекты.

Для экспериментов с ассоциацией с exe файлами можешь добавить в ключ HKEY_LOCAL_MACHINE\SOFTWARE\Dec Software\TC4Shell\Extensions\.exe параметр CanAssoc типа DWORD со значением 1. Это разблокирует возможность установки ассоциацией с exe файлами. Используй на свой страх и риск!

#71:  Author: FlasherLocation: Москва PostPosted: Mon Apr 10, 2017 07:27
    —
Dec
С виртуальными по нулям.
С exe почти порядок (я из диалога ассоциаций ставил) за исключением того, что открытие в отличии от других расширений происходит в новом окне.

#72:  Author: Dec PostPosted: Mon Apr 10, 2017 07:36
    —
Flasher wrote:
С виртуальными по нулям.
Т.е. все работает нормально?

Flasher wrote:
С exe почти порядок
Не совсем понял.

#73:  Author: FlasherLocation: Москва PostPosted: Mon Apr 10, 2017 07:41
    —
Dec wrote:
Т.е. все работает нормально?
С чего бы?
 Cкрипт копирования всего содержимого Тест.zip в Тест.7z:

Dec wrote:
Не совсем понял.
А что в этой фразе сокрального?:
Flasher wrote:
открытие в отличии от других расширений происходит в новом окне
Выбрали пункт из меню, открылось ещё одно окно Проводника.

#74:  Author: Dec PostPosted: Mon Apr 10, 2017 07:59
    —
Flasher wrote:
С чего бы?
Понятно. Видимо, уже староват я стал, не понимаю современного сленга.

Совет дня. Если вы обнаружили ошибку в работе программы, и хотите, что бы разработчик ее исправил, то самый действенный способ (как бы не банально это не звучало) - сообщить об этом разработчику и максимально детально объяснить, как ее воспроизвести.

Flasher wrote:
А что в этой фразе сокрального?
Изначально была речь о том, что в Vista+ при установке ассоциаций возникают ошибки запуска приложений (в Проводнике). Они есть или нет? Мне это не понятно.

#75:  Author: FlasherLocation: Москва PostPosted: Mon Apr 10, 2017 08:05
    —
К совету дня: запускаем vbs-скрипт для двух архивов в C:\ и видим, что ничего в Тест.7z не изменилось.
Мда, теперь не работает, даже если источником является каталог. Sad

С запуском exe проблем нет.

#76:  Author: Dec PostPosted: Mon Apr 10, 2017 09:27
    —
У меня для ситуации, когда источник каталог, все работает корректно. Проверь, установлены ли ассоциации (не просто выбраны плагины, а именно ассоциации).

А вот ситуация, когда источник архив, мне пока вообще не ясна. При отладке в дебагере процесс wcsript.exe просто закрывается без каких либо ошибок, все время в разных местах. Пока думаю.

#77:  Author: FlasherLocation: Москва PostPosted: Mon Apr 10, 2017 17:54
    —
Dec wrote:
Проверь, установлены ли ассоциации
Ну, а как они могут быть не установлены, если я вхожу в архивы?
После запуска TC2ShellAssocSetup.exe все галки там же, где и были при установке. Правда их там почему-то значительно меньше в списке.

#78:  Author: Dec PostPosted: Mon Apr 10, 2017 19:52
    —
Обновил TC4Shell, проверь.

#79:  Author: FlasherLocation: Москва PostPosted: Mon Apr 10, 2017 21:31
    —
Открытие exe по-прежнему в новом окне.
Копирование из папки починилось. Из архивов же пока так себе. Проверил какой-то zip - сработало, потом взял другие zip-ы, ничего не добавилось. Надо бы несколько архивов подсобрать для тестов.
И ещё почему-то окно ассоциаций не появилось, и установщик запросил перезапуск системы.

#80:  Author: Dec PostPosted: Mon Apr 10, 2017 21:35
    —
Flasher wrote:
Открытие exe по-прежнему в новом окне.
Это не изменится.

Flasher wrote:
Из архивов же пока так себе.
Будет что то более конкретное, пиши, буду разбираться.

Flasher wrote:
установщик запросил перезапуск системы.
Это обозначает, что dll, которые нужно было обновить, были загружены системой, и установщик не смог их обновить. Поэтому единственный вариант - перезагрузка.

#81:  Author: FlasherLocation: Москва PostPosted: Mon Apr 10, 2017 22:02
    —
Dec wrote:
Это не изменится.
По причине?

Dec wrote:
Поэтому единственный вариант - перезагрузка.
А почему единсвенный? Я просто сперва не выбрал завершение explorer. С предыдущей версией выбрал и такого сообщения не было. А сейчас при повторной попытке установить только это окно и выводится вместо установки. Правильней было бы дать возможность переустановить без explorer.

И почему не выползло окно ассоциаций, а TC2ShellAssocSetup.exe даёт урезанный список?

#82:  Author: Dec PostPosted: Mon Apr 10, 2017 22:24
    —
Решение о перезагрузке принимается кодом InnoSetup, к которому я не имею отношения. Если InnoSetup не может обновить файл, то он пытается найти процессы, которые его блокируют, и если если такие найдены, то предлагает их завершить. Если ты отказываешься их завершать, или не найдены не все процессы, то InnoSetup не может обновить файл, и единственный корректный вариант - перезагрузка.

TC2ShellAssocSetup.exe уже давно не входит в дистрибутив, его код перекочевал в dll файлы. И пользоваться им я очень не рекомендую, поскольку его код и метод установки не согласован с текущим методом в dll. Я бы даже бы рекомендовал сделать uninstall, удаление остатков в Program Files ручками, удаление веток реестра в CurrentUser и LocalMachine, и чистый install.

#83:  Author: Dec PostPosted: Tue Apr 11, 2017 11:25
    —
Добавил поддержку некоторых флагов, передаваемых функцией CopyHere:

FOF_SILENT (4)
FOF_RENAMEONCOLLISION (8)
FOF_NOCONFIRMATION (16)
FOF_NOERRORUI (1024)

#84:  Author: FlasherLocation: Москва PostPosted: Tue Apr 11, 2017 19:10
    —
Dec wrote:
его код перекочевал в dll файлы
И как с ними взаимодействовать? Как вызвать этот диалог?

Dec wrote:
Добавил поддержку некоторых флагов, передаваемых функцией CopyHere
Вот блин. Так у меня там в сумме и другие имеются. Я думал, что это всё по умолчанию... Посмотрел, а MoveHere-то вообще как CopyHere, файлы в поддерживаемом правку источнике остаются. Sad А он-то мне как раз и нужен.

При попытке скопировать файлы в этот архив выпадает окно с ошибкой:
Quote:
Ошибка 0x800401F0: Не был произведен вызов CoInitialize.

И на первый вопрос предыдущего поста ответ бы получить.

#85:  Author: Dec PostPosted: Tue Apr 11, 2017 20:49
    —
Flasher wrote:
И как с ними взаимодействовать? Как вызвать этот диалог?
Вариантов 2.
1) Пуск\TC4Shell\File associations
2) ControlsPanel\TC4Shell plugins\Кнопка на панели или пункт в контекстном меню.

Flasher wrote:
Я думал, что это всё по умолчанию...
Each Shell namespace must provide its own implementation of these flags, and each namespace can choose to ignore some or even all of these flags.

Flasher wrote:
При попытке скопировать файлы в этот архив выпадает окно с ошибкой
Не удалось воспроизвести.

Flasher wrote:
И на первый вопрос предыдущего поста ответ бы получить.
Я вообще не знаю, как ты добился того, что у тебя нет проблем с установкой ассоциаций с exe. Можешь показать скриншот контекстного меню после установки ассоциации?

Last edited by Dec on Tue Apr 11, 2017 22:09; edited 1 time in total

#86:  Author: FlasherLocation: Москва PostPosted: Tue Apr 11, 2017 21:37
    —
Dec wrote:
Вариантов 2.
Понял. Спасибо.
Dec wrote:
Не удалось воспроизвести.
У меня Win7 x86. Вот.
Dec wrote:
Можешь показать скриншот контекстного меню после установки ассоциации?


Прошу добавить MoveHere и другие флаги.

#87:  Author: Dec PostPosted: Tue Apr 11, 2017 21:46
    —
Flasher wrote:
У меня Win7 x86.
Буду тестировать.

Flasher wrote:
Судя по наличию команды Открыть как папку ассоциация НЕ была установлена. Эта команда есть у любого файла. Можно проверить по другому. Если в диалоге свойств exe файла после открытия на вкладке Навигация стоит галка Открывать EXE файлы как папки - ассоциация установлена.

Flasher wrote:
Прошу добавить MoveHere и другие флаги.
Насчет MoveHere я подумаю. А какие другие флаги интересуют?

#88:  Author: FlasherLocation: Москва PostPosted: Tue Apr 11, 2017 22:04
    —
Dec wrote:
Судя по наличию команды Открыть как папку ассоциация НЕ была установлена.
Т.е. открытие exe как архива к этому не относится?
Dec wrote:
Навигация стоит галка Открывать EXE файлы как папки - ассоциация установлена.
А... Не стояло. Поставил, стало показывать, что "указанный путь не существует".
А как отталкиваться от:
Dec wrote:
Это разблокирует возможность установки ассоциацией с exe файлами.
Ключ я создал. А дальше?

Dec wrote:
А какие другие флаги интересуют?
256, 512, 4096, 8192.

#89:  Author: Dec PostPosted: Tue Apr 11, 2017 22:22
    —
Flasher wrote:
Т.е. открытие exe как архива к этому не относится?
Как я писал ранее, TC4Shell умеет открывать ЛЮБОЙ файл как архив (точнее умеет пытаться открывать). Команда Открыть как папку для этого и служит.

Flasher wrote:
Поставил, стало показывать, что "указанный путь не существует".
Вот об этой проблеме с запуском exe файлов после установки ассоциаций я и говорил ранее.

Flasher wrote:
Ключ я создал. А дальше?
Не ясен вопрос. Ключ просто разрешает установку ассоциаций с exe. По умолчанию он отключен, что бы не возникало проблем с запуском exe файлов.

Flasher wrote:
А какие другие флаги интересуют?
256, 512, 4096, 8192.

Quote:
256: Display a progress dialog box but do not show the file names.

В случае скриптов прогрес не показывается вообще.

Quote:
512: Do not confirm the creation of a new directory if the operation requires one to be created.

TC4Shell никогда не спрашивает о создании новой директории.

Quote:
4096: Only operate in the local directory. Do not operate recursively into subdirectories.
Какой смысл ты вкладываешь в этот флаг?

Quote:
8192: Do not copy connected files as a group. Only copy the specified files.

TC4Shell никогда не копирует connected files as a group.

#90:  Author: FlasherLocation: Москва PostPosted: Tue Apr 11, 2017 23:21
    —
Насчёт exe ясно. Поковыряю реестр ещё.

Dec wrote:
В случае скриптов прогрес не показывается вообще.
Если получатель - папка, то отображается. Ждём секунды 3 перед появлением прогресса. Играет роль объём и число объектов в архиве. А вот если получатель - архив, то прогресса нет. Но я надеялся, что в случае TC4Shell это можно как-то обойти.
Dec wrote:
TC4Shell никогда не спрашивает о создании новой директории.
ОК. 512 не надо.
Dec wrote:
Какой смысл ты вкладываешь в этот флаг?
После того как я его добавил в этот скрипт, у человека исчезла проблема включения иерархии дисков. Я так и не понял, почему без флага возникал такой глюк.
Dec wrote:
TC4Shell никогда не копирует connected files as a group.
Речь про web-связку. Т.е. с этим проблем нет?

#91:  Author: Dec PostPosted: Tue Apr 11, 2017 23:52
    —
Flasher wrote:
А вот если получатель - архив, то прогресса нет.
Стандартной практикой в shell подсистеме является отсутствие диалогов в ситуации, когда в операцию не передан дескриптор какого нибудь окна, которое станет родительским по отношению к создаваемым в случае необходимости создания окон. Я придерживаюсь этой практики. Поскольку wscript.exe не передает ни какой дескриптор окна, TC4Shell считает, что UI не нужен. Ну а раз UI не нужен, то и окно прогресса не нужно.

Flasher wrote:
После того как...
Я поизучаю, как работает SHFileOperation с этим флагом.

Flasher wrote:
Речь про web-связку. Т.е. с этим проблем нет?
Проблем нет. Это фишка Проводника, я пока не планирую ее повторять.

#92:  Author: FlasherLocation: Москва PostPosted: Tue Apr 11, 2017 23:56
    —
Dec wrote:
отсутствие диалогов в ситуации, когда в операцию не передан дескриптор какого нибудь окна
Например? Дескриптор какого окна может быть передан, если мы задаём только пути?
Dec wrote:
Это фишка Проводника, я пока не планирую ее повторять.
Ясно.

#93:  Author: Dec PostPosted: Wed Apr 12, 2017 00:42
    —
Flasher wrote:
Дескриптор какого окна может быть передан, если мы задаём только пути?
Я говорю в целом о shell подсистеме. Например, при операции drag&drop (при которой вызывается тот же самый код, что и при работе скрипта), мне передается дескриптор окна, соответственно я отображаю UI при необходимости. Средствами vbs дескриптор не передать. Ну а раз нет ножек, значит нет и мультиков.

#94:  Author: FlasherLocation: Москва PostPosted: Wed Apr 12, 2017 00:58
    —
Dec wrote:
Ну а раз нет ножек, значит нет и мультиков.
Так я выше написал, что мультики есть в случае папок без окон. Вот и спрашиваю, откуда там дескриптор?

#95:  Author: Dec PostPosted: Wed Apr 12, 2017 01:01
    —
Flasher wrote:
Вот и спрашиваю, откуда там дескриптор?
Ну, MS славится нарушением собственных стандартов. Возможно, они показывают прогресс всегда независимо от наличия переданного дескриптор.

Добавлено спустя 1 час 55 минут:

Flasher wrote:
При попытке скопировать файлы в этот архив выпадает окно с ошибкой
Поправил свой код. Проверяй.

#96:  Author: FlasherLocation: Москва PostPosted: Wed Apr 12, 2017 04:07
    —
Порядок.
1. Что по 4096 и MoveHere?
2. А какие вообще плюсы у создания tmp в том же каталоге с заменой архива? Я утилитой могу распаковать файлы и переместить в архив. Я полагался на перенос, равносильный тому, что происходит между папками. В чём же тут виртуальность?
3. И ещё насчёт разрешения ассоциации для exe. Что нужно сделать, чтобы оно распространялось и на обсуждаемые методы?

#97:  Author: Dec PostPosted: Wed Apr 12, 2017 04:13
    —
Flasher wrote:
1. Что по 4096 и MoveHere?
(Экий ты быстрый) Изучаю вопрос.

Flasher wrote:
А какие вообще плюсы у создания tmp в том же каталоге с заменой архива?
Как бы ты не упаковывал, чем бы ты не упаковывал, что бы ты не упаковывал, tmp файл будет создаваться в любом случае.

Flasher wrote:
И ещё насчёт разрешения ассоциации для exe. Что нужно сделать, чтобы оно распространялось и на обсуждаемые методы?
Не понят вопроса.

#98:  Author: FlasherLocation: Москва PostPosted: Wed Apr 12, 2017 04:24
    —
Dec wrote:
Экий ты быстрый
Просто постоянная переустановка из-за каждой незначительной правки с вероятностью нарваться на перезагрузку системы как-то не радует. Проще подождать нескольких правок, тем более, что на данном этапе это не горит.
Dec wrote:
чем бы ты не упаковывал, что бы ты не упаковывал, tmp файл будет создаваться в любом случае.
В смысле? Сама упаковка из общих папок никаких tmp не подразумевает. Если бы такое было, я бы это ещё 100 лет назад заметил.
Dec wrote:
Не понят вопроса.
Мы обсуждаем методы CopyHere/MoveHere. Если источник exe, то как заставить их с ним работать?

#99:  Author: Dec PostPosted: Wed Apr 12, 2017 04:34
    —
Flasher wrote:
Сама упаковка из общих папок никаких tmp не подразумевает. Если бы такое было, я бы это ещё 100 лет назад заметил.
Т.е. ты хочешь сказать, что 7z умеет обновлять архивы без создания временных файлов?

Flasher wrote:
Если источник exe, то как заставить их с ним работать?
Для кого я это писал?

#100:  Author: FlasherLocation: Москва PostPosted: Wed Apr 12, 2017 05:31
    —
Dec wrote:
Т.е. ты хочешь сказать, что 7z умеет обновлять архивы без создания временных файлов?
Не, не умеет. Но она хотя бы в Temp их кидает.

Dec wrote:
Для кого я это писал?
Это я помню. Мы же там обсуждали, как разобраться отдельно с exe.

Quote:
А вот если получатель - архив, то прогресса нет.
Ошибочка. Без привязи к TC4Shell он есть:

Так что запрос остаётся актуальным. Если не получится, то по умолчанию TC4Shell лучше отвязать от ProgID zip-а.

Насчёт диалога ассоциаций. А можешь сделать, чтобы при применении обновлялись только изменённые значения вместо полной перезаписи?

#101:  Author: Dec PostPosted: Wed Apr 12, 2017 06:59
    —
Flasher wrote:
Что по 4096?

Я так и не понял, за что этот флаг отвечает.

Flasher wrote:
Что по MoveHere?

Как ни странно, но как для сценариев, где указана функция CopyHere, так и для сценариев, где указана функция MoveHere, wscript.exe передает набор флагов [DROPEFFECT_COPY, DROPEFFECT_MOVE, DROPEFFECT_LINK], что обозначает, что я сам должен выбрать из этих вариантов, что мой код будет делать (мой код выбирает всегда DROPEFFECT_COPY). Т.е. я не могу в своем коде отличить CopyHere от MoveHere.

Flasher wrote:
Но она хотя бы в Temp их кидает.

А чем Temp лучше директории архива? Я лишь вижу две причины, чем хуже.

1) Temp может располагаться на другом физическом диске. Это обозначает, что после создания новой версии архива новый файл нужно КОПИРОВАТЬ с диска на диск вместо простого удаления исходного архива и переименования новой копии.

2) Для shell важна скорость, с которой обновляется файл. Если исходный архив удалить и начать копировать его новую версию из другой папки, то shell будет считать, что файл удален, и окна с архивами, открытые в Проводнике, просто закроются. А если удалить и быстро переименовать, то для shell это будет обновленный файл, поэтому окна с архивами, открытые в Проводнике, просто обновятся в соответствии с новым содержимым архива.

Flasher wrote:
Если не получится, то по умолчанию TC4Shell лучше отвязать от ProgID zip-а.
Если тебе не нужна ассоциация между zip и TC4Shell, то просто не включай ее. Или что то иное подразумевалось?

Flasher wrote:
А можешь сделать, чтобы при применении обновлялись только изменённые значения вместо полной перезаписи?
Нет. Это механизм самодиагностики и подчистки ненужных файлов.

#102:  Author: FlasherLocation: Москва PostPosted: Wed Apr 12, 2017 07:50
    —
Dec wrote:
Я так и не понял, за что этот флаг отвечает.
А просто добавить его можно, чтобы избежать проблем?
Dec wrote:
Т.е. я не могу в своем коде отличить CopyHere от MoveHere.
Предлагаю по неиспользуемому флагу. 64, например.

Dec wrote:
А чем Temp лучше директории архива?
Никогда не любил, когда времянки создавались в том же каталоге. Во всех скриптах скидывал их только в Temp. 7z.exe, кстати, так же делает. Не всегда ясно без сигналов, откуда этот tmp прибыл. В моменты операций с файлами в той же панели этот файл может случайно оказаться в обрабатываемом списке после групповых выделений, что крайне нежелательно.
1) В крайнем случае можно сравнивать буквы дисков и в случае совпадения, перемещать в Temp. Архивы в отличии от медиа чаще собирают на системном диске. В случае иных дисков можно искать в корне System Volume Information либо $RECYCLE.BIN и скидывать туда, если нет, то создавать папку с атрибутом "скрытый".
2) Окна с архивами в Проводнике как-то касаются скриптов? Зачем им окна?

Dec wrote:
Или что то иное подразумевалось?
Постараться выяснить, как отобразить прогресс аналогично системному поведению, добавить связанные флаги. Если не выйдет, то сделать привязку zip к ProgID системы по умолчанию, чтобы пользователю не рассказывать как специально добиться такого результата.

Dec wrote:
Это механизм самодиагностики и подчистки ненужных файлов.
Не понял. Он так медленно срабатывает из-за чтения реестра? Диагностировать то он должен перед отрисовкой флагов в окне. А при чём тут применение?

#103:  Author: Dec PostPosted: Wed Apr 12, 2017 08:36
    —
Flasher wrote:
А просто добавить его можно, чтобы избежать проблем?
Добавляй, я просто игнорирую ее в своем коде.

Flasher wrote:
Предлагаю по неиспользуемому флагу.
Однозначно нет, никаких хаков я использовать не буду. Код обработки один для всего, и для твоих скриптов, и для Drag&Drop, и для Copy&Paste. Завтра еще кто-нибудь создаст какого нибудь клиента, который будет использовать NSE типа моего для манипуляций с архивами. И кто-то может случайно передать недокументированный флаг и потерять данные.

Flasher wrote:
Никогда не любил, когда времянки создавались в том же каталоге.
А я наоборот.

Flasher wrote:
В крайнем случае можно сравнивать буквы дисков и в случае совпадения, перемещать в Temp.
Одинаковые буквы дисков - это еще не обозначает, что файлы расположены на одном физическом диске, ибо есть такая штука, как hardlink.

Flasher wrote:
Окна с архивами в Проводнике как-то касаются скриптов?
Потому что код обработки один для всего, использовать хаки для определения того, какая операция выполняется я однозначно не буду.

Flasher wrote:
Постараться выяснить, как отобразить прогресс аналогично системному поведению
Это я и так знаю, как сделать. Но делать не буду. Нет переданного дескриптора окна - нет UI.

Flasher wrote:
добавить связанные флаги
Куда добавить? Какие флаги?

Flasher wrote:
Если не выйдет, то сделать привязку zip к ProgID системы по умолчанию, чтобы пользователю не рассказывать как специально добиться такого результата.
Не понимаю эту фразу. Если не нужна ассоциация между zip и TC4Shell, то просто не включай ее.

Flasher wrote:
Он так медленно срабатывает из-за чтения реестра?
Не занимался анализом.

Flasher wrote:
Диагностировать то он должен перед отрисовкой флагов в окне. А при чём тут применение?
Возможно, диагностика не совсем правильный термин. При применении происходит обновление всех записей в реестре на случай, если они были изменены, или была произведена установка ассоциаций с другими программами (в этом случае я удаляю ненужные записи в реестре).

#104:  Author: FlasherLocation: Москва PostPosted: Wed Apr 12, 2017 14:05
    —
Dec wrote:
Добавляй, я просто игнорирую ее в своем коде.
Я имел в виду тебя. Мне то зачем добавлять то, что не поможет? Проблему наличие неработающего флага не вызовет, проблему может вызвать как раз его неработоспособность.
Dec wrote:
Однозначно нет
Ну, если ты не сделаешь MoveHere, то все твои последние старания коту под хвост.
Dec wrote:
не обозначает, что файлы расположены на одном физическом диске, ибо есть такая штука, как hardlink.
Которая всегда расположена не то, что на одном физическом диске, а в пределах его одного тома. Very Happy
Dec wrote:
Куда добавить? Какие флаги?
В смысле куда? В код. 4 ты уже добавил. Остался 256.
Dec wrote:
Если не нужна ассоциация между zip и TC4Shell
Так это объяснять мне как автору скрипта придётся, что и нужно избежать.
Dec wrote:
При применении происходит обновление всех записей в реестре на случай, если они были изменены
Вот это вещь должна быть строго опциональной, ИМХО. Мало ли кто и по какой причине вносил правку. Было бы правильно флаг снизу добавить.

#105:  Author: Dec PostPosted: Wed Apr 12, 2017 14:38
    —
Flasher wrote:
Я имел в виду тебя.
А что мне добавить, если мы так и не выяснили, за что этот флаг отвечает.

Flasher wrote:
Ну, если ты не сделаешь MoveHere
А почему тебе так принципиально использовать именно MoveHere, почему не хочешь просто удалить файлы после CopyHere - Items.InvokeVerbEx("delete") (правда, тебе придется снова обновить TC4Shell с риском перезагрузки)

Flasher wrote:
Которая всегда расположена не то, что на одной физическом диске, а в пределах его одного тома. Very Happy
Ок, спутал с junctions points.

Flasher wrote:
Так это объяснять мне как автору скрипта придётся, что и нужно избежать.
Просто пиши комментарий в скрипте, что окна с прогрессом не будет, потому что автор TC4Shell не хочет его делать.

#106:  Author: FlasherLocation: Москва PostPosted: Wed Apr 12, 2017 15:03
    —
Dec wrote:
А что мне добавить, если мы так и не выяснили, за что этот флаг отвечает.
Мы выяснили, в каких ситуациях он помогает.
Dec wrote:
А почему тебе так принципиально использовать именно MoveHere, почему не хочешь просто удалить файлы после CopyHere - Items.InvokeVerbEx("delete")
Во-первых, эта команда удаляет файлы в корзину. MoveHere этим не занимается, он именно переносит. Утилитой же я могу сразу упаковывать с удалением (-sdel). Т.е. CopyHere тут не даёт премущества.
Dec wrote:
Просто пиши комментарий в скрипте, что окна с прогрессом не будет, потому что автор TC4Shell не хочет его делать.
Никогда такой грязи не разводил в комментах.

Dec wrote:
Но делать не буду. Нет переданного дескриптора окна - нет UI.
А что это означает в контексте работы в Проводнике? Как это помешает, если там есть окна со своими дескрипторами?

#107:  Author: Dec PostPosted: Thu Apr 13, 2017 00:29
    —
Flasher wrote:
Мы выяснили, в каких ситуациях он помогает.
Ты скажи мне конкретно, что мой код должен делать или наоборот не делать, если передан этот флаг?

Flasher wrote:
Но делать не буду. Нет переданного дескриптора окна - нет UI.
А что это означает в контексте работы в Проводнике? Как это помешает, если там есть окна со своими дескрипторами?[/quote]

Dec wrote:
Стандартной практикой в shell подсистеме является отсутствие диалогов в ситуации, когда в операцию не передан дескриптор какого нибудь окна, которое станет родительским по отношению к создаваемым в случае необходимости создания окон. Я придерживаюсь этой практики. Поскольку wscript.exe не передает ни какой дескриптор окна, TC4Shell считает, что UI не нужен. Ну а раз UI не нужен, то и окно прогресса не нужно.

#108:  Author: FlasherLocation: Москва PostPosted: Thu Apr 13, 2017 01:07
    —
Dec wrote:
наоборот не делать, если передан этот флаг?
Я же приводил ссылку.

Зачем ты мне привёл цитату, которая была оспорена?
Есть стандартные методы, которые вызывают прогресс, и ни о каких дескрипторах там речь вестись не может. Есть флаги, которые влияют на поведение прогресса. Ты пишешь, что плевать хотел на системное поведение, потому что есть какая-то "стандартная практика", которая с твоей точки зрения важнее, чем поведение, которое документировано и к которому на протяжении не одного десятка лет привыкли пользователи скриптов. Это как минимум неразумно.

#109:  Author: Dec PostPosted: Thu Apr 13, 2017 01:13
    —
Flasher wrote:
Я же приводил ссылку.
Давай представим себе, что я даун, и не понимаю, что там написано. И скажи мне, как дауну, что мой код должен делать или наоборот не делать, если передан этот флаг?

Flasher wrote:
Это как минимум неразумно.
К сожалению, мы не придем в данном вопросе к компромиссу.

#110:  Author: FlasherLocation: Москва PostPosted: Thu Apr 13, 2017 02:47
    —
Dec wrote:
мы не придем в данном вопросе к компромиссу.
Только в данном? А хотя в одном из всех представленных пришли?

#111:  Author: Dec PostPosted: Thu Apr 13, 2017 06:42
    —
Flasher wrote:
к которому на протяжении не одного десятка лет привыкли пользователи скриптов.
У нас проблема понимания сути TC4Shell. TC4Shell НЕ создавался как инструмент скриптописателей и скриптопользователей. То, что TC4Shell может быть использован в скриптах, являться ПОБОЧНОЙ функцией. Реальная аудитория, на которую рассчитан проект, imho вообще не пересекается с аудиторией скриптописателей. И развивая проект, я развиваю его в первую очередь для своей аудитории. Я не против того, что TC4Shell используется в скриптах, и даже готов добавлять дополнительный функционал в него, но ломать принципы проекта ради использования его в скриптах я не буду.

#112:  Author: FlasherLocation: Москва PostPosted: Thu Apr 13, 2017 07:47
    —
Dec wrote:
У нас проблема понимания сути TC4Shell.
Нет такой проблемы. Это домыслы.
Dec wrote:
Реальная аудитория, на которую рассчитан проект, imho вообще не пересекается с аудиторией скриптописателей.
Тогда чего ты тратишь на меня нереального своё драгоценное время?
Dec wrote:
но ломать принципы проекта ради использования его в скриптах я не буду.
Такая позиция предполагает двойные стандарты при учёте другого довода:
Dec wrote:
Завтра еще кто-нибудь создаст какого нибудь клиента, который будет использовать NSE типа моего для манипуляций с архивами. И кто-то может случайно передать недокументированный флаг и потерять данные.
Т.е. тебя больше заботит, что когда-нибудь в каком-то стороннем клиенте что-то отломается, и посему ты не будешь поддерживать системные технологии в пользу сторонних, по сути ещё не придуманных, вероятность появления которых вообще под большим вопросом.
Да и что есть "принципы"? Тебя так волнует ментальная сторона вопроса, обитающая где-то по соседству с упрямством? Меня, например, волнуют совсем иные вещи: КПД от дополнительной разработки, компромисс между существующей и дополняющей работой за явным отсутствием практических (а никак не идейных) противоречий, которые только облагораживают почву для дальнейшего развития.

#113:  Author: Dec PostPosted: Thu Apr 13, 2017 08:06
    —
Flasher wrote:
Тогда чего ты тратишь на меня нереального своё драгоценное время?

Dec wrote:
Я не против того, что TC4Shell используется в скриптах, и даже готов добавлять дополнительный функционал в него


В целом, как мне видится диалога у нас не получится. И предлагаю его закончить.

#114:  Author: FlasherLocation: Москва PostPosted: Thu Apr 13, 2017 08:12
    —
Quote:
и даже готов добавлять дополнительный функционал в него
Приведённая цитата никакой оправдательной нагрузки не несёт (тем более, если учесть что наш разговор о скриптах зашёл намного позже основополагающего, но это не помешало тебе исключить меня из списков реальной аудитории), т.к. весь потенциал при полным отвержении всех возможных предложений по усовершенствованию исчерпан. А по итогам можно сделать вывод, что этот диалог и начинать не стоило.



Total Commander -> Программное обеспечение


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

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group