А как тогда быть с диалогами?MVV писал(а):избавиться от SHFileOperation
MultiArc
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Исправил баг, теперь должно работать.
MultiArc 1.4.2.122
Собственно, условия воспроизведения ситуации:
1. Извлекать файлы обязательно из подкаталога архива.
2. Извлекать в каталог с таким же именем, как у подкаталога архива, в котором они находятся.
3. Немного уличной магии (иногда воспроизводится не с первой попытки, а после нескольких).
MultiArc 1.4.2.122
Собственно, условия воспроизведения ситуации:
1. Извлекать файлы обязательно из подкаталога архива.
2. Извлекать в каталог с таким же именем, как у подкаталога архива, в котором они находятся.
3. Немного уличной магии (иногда воспроизводится не с первой попытки, а после нескольких).
На оффоруме сообщили, что MultiArc слишком часто запрашивает список файлов в архиве, оказалось, что при каждом открытии архива. Поправил эту байду, теперь список запрашивается, только когда он реально нужен.
MultiArc MVV Build 1.4.2.134:
* теперь список файлов в архиве запрашивается только при необходимости, а не при каждом открытии архива
* улучшена обработка неправильных дат (4-значные годы < 1980 отображаются как 1980, а не как 20xx)
Кому не лень, проверьте, что всё работает.
MultiArc MVV Build 1.4.2.134:
* теперь список файлов в архиве запрашивается только при необходимости, а не при каждом открытии архива
* улучшена обработка неправильных дат (4-значные годы < 1980 отображаются как 1980, а не как 20xx)
Кому не лень, проверьте, что всё работает.
Ну, раз ничего не заметил, это уже говорит о том, что я по крайней мере ничего не сломал. 
Проблема у пользователя на оффоруме была в том, что перед тем, как начать добавлять файлы в архив, мультиарк запрашивал список файлов архива, и это занимало много времени, т.к. архив был очень большим.
Вот он и спросил, зачем список запрашивается дважды, и можно ли что-то с этим сделать, ничего не сломав.
Поковыряв, я выяснил, что MultiArc при каждой инициализации объекта CArchiverEngine, взаимодействующего с архиватором, запрашивал список файлов, даже если этот список не был нужен для последующих действий. Собственно, в упомянутом выше случае листинг запрашивался сначала при открытии архива тоталом для получения списка файлов (тут список реально использовался), а затем уже сам MultiArc инициализировал CArchiverEngine для вызова команды добавления файлов в архив (и тут список файлов в архиве запрашивался впустую).
Теперь список файлов запрашивается только тогда, когда он реально нужен: при перечислении тоталом файлов в архиве (при первом вызове ReadHeader[Ex]) и при удалении файлов из архива (для построения корректного списка удаляемых файлов). Разница может быть заметна, например, при добавлении файлов в очень большой архив, ну или если просто посмотреть, в каких случаях старый и новый MultiArc дергает архиватор.
Проблема у пользователя на оффоруме была в том, что перед тем, как начать добавлять файлы в архив, мультиарк запрашивал список файлов архива, и это занимало много времени, т.к. архив был очень большим.
Вот он и спросил, зачем список запрашивается дважды, и можно ли что-то с этим сделать, ничего не сломав.
Поковыряв, я выяснил, что MultiArc при каждой инициализации объекта CArchiverEngine, взаимодействующего с архиватором, запрашивал список файлов, даже если этот список не был нужен для последующих действий. Собственно, в упомянутом выше случае листинг запрашивался сначала при открытии архива тоталом для получения списка файлов (тут список реально использовался), а затем уже сам MultiArc инициализировал CArchiverEngine для вызова команды добавления файлов в архив (и тут список файлов в архиве запрашивался впустую).
Теперь список файлов запрашивается только тогда, когда он реально нужен: при перечислении тоталом файлов в архиве (при первом вызове ReadHeader[Ex]) и при удалении файлов из архива (для построения корректного списка удаляемых файлов). Разница может быть заметна, например, при добавлении файлов в очень большой архив, ну или если просто посмотреть, в каких случаях старый и новый MultiArc дергает архиватор.
Нашёл таки родную утилиту (в этом пакете последняя). Казалось бы то, что нужно, но с папками не работает и с @%L/%F вместо %S выдаёт ошибку.Flasher писал(а):Ещё проге не хватает поддержки ... ключей с именем архива и методом упаковки.
Я так понял, что [s]в cab-ы лучше чем mscab ничего не жмёт[/s] (makecab, 7-zip и т.д.). Что плохого в тихом режиме и указании имени в комстроке?
Код: Выделить всё
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\CabArc.exe
-m LZX:21 n "%T%O.cab" %S
cabview.dll
Упаковать выбранное в CAB в другую панель
1Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Кто-нибудь поддерживает аддоны к мультиарку в актуальном состоянии? В основном интересуют те, которые для инсталляторов. Может ли он эти аддоны выложить на wincmd.ru?
Добавлено спустя 1 час 11 минут:
MVV
Баги на вкладке настроек "Аддоны":
1) Импорт аддона не работает корректно, например, строки, оканчивающиеся на двойную кавычку, её лишаются при импорте.
2) Статусы всех аддонов - "Не зарегистрирован в TC", хотя, например, для CAB и UHA у меня есть соответствующие строчки в wincmd.ini
3) Кнопка Изменить MultiArc.ini... выдаёт мне при нажатии: "Не удается найти "C:\Program". Проверьте, правильно ли указано имя и повторите попытку."
Думал, может быть, она пытается использовать для открытия Editor, указанный к wincmd.ini - у меня был C:\Program Files (x86)\Notepad++\notepad++.exe без кавычек - я его закавычил, всё равно пишет то же самое.
Добавлено спустя 1 час 11 минут:
MVV
Баги на вкладке настроек "Аддоны":
1) Импорт аддона не работает корректно, например, строки, оканчивающиеся на двойную кавычку, её лишаются при импорте.
2) Статусы всех аддонов - "Не зарегистрирован в TC", хотя, например, для CAB и UHA у меня есть соответствующие строчки в wincmd.ini
3) Кнопка Изменить MultiArc.ini... выдаёт мне при нажатии: "Не удается найти "C:\Program". Проверьте, правильно ли указано имя и повторите попытку."
Думал, может быть, она пытается использовать для открытия Editor, указанный к wincmd.ini - у меня был C:\Program Files (x86)\Notepad++\notepad++.exe без кавычек - я его закавычил, всё равно пишет то же самое.
funduk,
1) При ручной вставке секции в Multiarc.ini аддон работает? В исходниках вроде всё консистентно: чтение и запись через системные функции чтения/записи INI. Следует учитывать, что эти функции при чтении убирают внешние кавычки, если они есть, и добавляют их при сохранении, если параметр начинается/заканчивается пробелами или кавычками. Поэтому правило: если в строке есть кавычки или пробелы в начале или конце, необходимо заключить её в дополнительные кавычки.
2) Регистрируются конкретные расширения, перечисленные в списке расширений в аддоне. Тут нужен пример аддона...
3) Т.к. параметр Editor в wincmd.ini содержит не просто путь, а комстроку, то путь к редактору с пробелами надо обязательно заключать в кавычки. Кроме того, см. ответ на п.п. 1.
1) При ручной вставке секции в Multiarc.ini аддон работает? В исходниках вроде всё консистентно: чтение и запись через системные функции чтения/записи INI. Следует учитывать, что эти функции при чтении убирают внешние кавычки, если они есть, и добавляют их при сохранении, если параметр начинается/заканчивается пробелами или кавычками. Поэтому правило: если в строке есть кавычки или пробелы в начале или конце, необходимо заключить её в дополнительные кавычки.
2) Регистрируются конкретные расширения, перечисленные в списке расширений в аддоне. Тут нужен пример аддона...
3) Т.к. параметр Editor в wincmd.ini содержит не просто путь, а комстроку, то путь к редактору с пробелами надо обязательно заключать в кавычки. Кроме того, см. ответ на п.п. 1.
1) Да. При импорте иногда удаляет только последнюю кавычку, иногда и первую тоже (в параметре Format0). Я твой аддон использую, можешь легко проверить, как он импортируется) Там ещё <SeekID> в 0 превращается и добавляются параметры, которых не было в аддоне.
2) Cab. У меня была строка, а плагин понимает только строку
3) Так я говорю, что не зависимо от кавычек не работает.
2) Cab. У меня была строка
Код: Выделить всё
cab=223,%APPDATA%\GHISLER\Plugins\WCX\MultiArc\Multiarc.wcx
Код: Выделить всё
cab=223,C:\Users\Roman\AppData\Roaming\GHISLER\Plugins\WCX\MultiArc\MULTIA~1.WCXХорошо ещё, что у тебя редирекция не используется, как в моем отладочном конфиге. Проверил без редирекции: переменные окружения резолвятся корректно, и проверка работает. Но у меня имя файла плагина после приведения пути к короткому формату остаётся Multiarc.wcx (и команда dir /x не отображает короткого имени для этого файла, но отображает короткие имена для имён с пробелами).2) Cab. У меня была строка
Открыл диалог настройки редактора в тотале, прописал там путь к редактору "E:\Program Files\Tools\EmEditor\EmEditor.exe", в конфиге ожидаемо получил строку Editor=""E:\Program Files\Tools\EmEditor\EmEditor.exe"", и правка конфига через диалог конфигурации MultiArc работает.3) Так я говорю, что не зависимо от кавычек не работает.
Код: Выделить всё
Editor=""E:\Program Files\Tools\EmEditor\EmEditor.exe""Путь без кавычек вообще у меня всегда работал, в т.ч. когда, например, в TC plugins manager нажимаешь "Правка" для wincmd.ini. Кстати, на счёт "ожидаемо": тотал заковычил строку, видимо, не смотря на неё вообще. Если бы у тебя было бы так же, проблемы бы не возникло)
На счёт короткого имени, это wcx64!!
Код: Выделить всё
Содержимое папки C:\Users\Roman\AppData\Roaming\GHISLER\Plugins\WCX\MultiArc
28.07.2016 20:28 <DIR> .
28.07.2016 20:28 <DIR> ..
28.07.2016 12:54 16 126 1.ini
19.04.2010 14:26 <DIR> addons
03.04.2016 20:25 7 680 ConPaste.exe
28.07.2007 23:41 28 672 CONSPA~1.PIP conspawn.pipe
04.08.2013 20:35 51 712 CONSPA~2.PIP conspawn.pipe64
20.09.2015 13:54 <DIR> Lang
12.05.2006 16:01 1 747 LICENSE
19.10.2015 20:26 34 945 MultiArc.chm
30.07.2007 23:02 42 678 MultiArc.hlp
28.07.2016 12:54 16 126 MultiArc.ini
04.06.2016 19:30 173 056 MultiArc.wcx
04.06.2016 19:30 214 016 MULTIA~1.WCX MultiArc.wcx64
28.07.2016 20:07 16 202 MULTIA~1.INI MultiArc_.ini
28.07.2016 12:55 675 MVVINN~1.ADD MVV inno.addon
23.05.2006 17:17 1 714 MYINNO~1.ADD My Inno.addon
11.05.2006 10:10 1 418 MYNSIS~1.ADD My NSIS.addon
07.02.2011 14:49 3 170 NOTUSE~1.ADD not used.addon
04.06.2016 19:11 4 136 Readme.txt
У тотала там сложная логика, т.к. изначально параметр принимал только путь к редактору, а потом добавились аргументы и т.п. Добавлю поддержку голого пути в MultiArc: если текст целиком является валидным путем к файлу, он будет запускаться.Кстати, на счёт "ожидаемо": тотал заковычил строку, видимо, не смотря на неё вообще.
А, 64-битная версия... тогда понятно, почему короткое имя появилось.Т.е. он короткое имя 64битного файла подставил.
Но у меня и тут работает верно: оба имени файла (считанный после расширения переменных и приведения к короткой форме и тот, который получен из собственного пути плагина) имеют вид MULTIA~1.WCX... Интересно, в чём беда...