MultiArc

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

nick58
Замечание за оверквотинг. Совершенно ненужное полное цитирование предыдущего сообщения удалено.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Подниму снова вопрос о NanoZip.
Вот запаковал простейшей командой один текстовый файл в последней версии архиватора:
nz.exe a readme.nz readme.txt
http://rghost.net/7Xg4VJJ5g
С помощью предложенных на англофоруме комбинаций MultiArc последней выложенной версии (от MVV) входит в архив, но ничего внутри не видит. Равно как и не может создать архив.
Как подружить архиватор с MultiArc? :)
Windows 11 | TC DreamLair eternal pre-α
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

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

Вообще, формат архива у NanoZip - не айс. Хотя бы из-за имён файлов в ANSI в 21 веке.
Skif_off
Сообщения: 1252
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

MVV
Вроде было уже что-то такое с удалением файлов в каталоге назначения: отсюда слил PilotEdit Lite, двойным кликом вхожу в zip-архив, потом с Ctrl+PdDn в exe'шник и из папки C:\Temp\_tc\Setup.exe\{app}\Styles\ пытаюсь скопировать файлы Vista.cjstyles и WinXP.Luna.cjstyles в каталог, где они уже есть, соглашаюсь на замену файлов - а они удаляются. После этого скопировать эти два файла уже в пустой каталог можно только выйдя из exe'шника и войдя в него снова.
Другие файлы аналогично с заменой копируются без проблем, как и каталог C:\Temp\_tc\Setup.exe\{app} целиком. Что в этих двух не так? Общего только длинное расширение и каталог Styles, точка в имени только у второго.

Пути без пробелов, [A-Za-z_]+.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

У меня копируются нормально. Может, антивирус вредничает?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Skif_off писал(а):Пути без пробелов, [A-Za-z_]+.
Вообще-то \w+.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Skif_off
Сообщения: 1252
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

MVV
Антивирусника нет, есть проактивка Comodo, но правила лояльны и для ТС, и для папки с редакторами, удаления или перемещения в настройках и правилах точно нет.
Наверное, сравню с запуском в консоли и в чистом ТС.
Да, так получается в ТС обеих разрядностей.

[cut="2Flasher"]Такой набор исчерпывающий и не нуждается в пояснениях ни для новичка, ни для матёрого.
А ту же небезызвестную либу PCRE можно скомпилить с поддержкой юникода и локалей - тогда по умолчанию в \w+ попадут далеко не только буквы из ASCII.[/cut]
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Skif_off, тогда [A-z_]+.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Skif_off писал(а):Антивирусника нет, есть проактивка Comodo, но правила лояльны и для ТС, и для папки с редакторами, удаления или перемещения в настройках и правилах точно нет.
Попробуй временно отключить проактивку и песочницу в Comodo.
Skif_off
Сообщения: 1252
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

MVV
Песочницу не использую, проактивку отключал, пробовал чистый ТС (с UseIniInProgramDir=7 в wincmd.ini) +MultiArc - воспроизводится. Конфиг:
[cut]

Код: Выделить всё

[MultiArc]
ConMode=0
ConMinimize=1
ConExclude=1
ConAClose=1
ConDelay=4
ConLines=0
LanguageFile=Multiarc_Russian.lng

;от MVV:
[InnoSetup]
Description="InnoSetup"
ID=49 6E 6E 6F
IDPos=<SeekID>
Archiver="InnoUnp.exe"
List="ConPaste.exe /s /h%AQ /c%AWQ /p\"Введите пароль к дистрибутиву:\" \"Type in a password\" %PQA -v -m %AQA"
Start="^--------------------------------------"
End="^--------------------------------------"
Format0="zzzzzzzzzz+ +yyyy.tt.dd hh:mm +n++"
Extract="ConPaste.exe /s /h%AQ /c%AWQ /p\"Введите пароль к дистрибутиву:\" \"Type in a password\" %PQA -e -m %AQA {@%LQA}"
ExtractWithPath="ConPaste.exe /s /h%AQ /c%AWQ /p\"Введите пароль к дистрибутиву:\" \"Type in a password\" %PQA -x -m %AQA {@%LQA}"
Debug=0
BatchUnpack=1
[/cut]
В консоли нормально извлекаются после подтверждения перезаписи.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Взял чистый тотал, последний MultiArc, последний InnoUnp, распаковал файлы Vista.cjstyles и WinXP.Luna.cjstyles в новую папку, потом попытался снова извлечь их в эту же папку с перезаписью - работает; перезапустил тотал и повторил - работает. Может, зависит от пути, в который извлекаешь?

Попробуй в Process Monitor активность посмотреть, а ещё проверить, открыты ли и кем эти файлы в папке назначения и во временной папке (во временной они, впрочем, не должны существовать после успешной операции).

Хм, у меня кое-как после танцев с бубном удаётся воспроизвести. Но вообще перестают копироваться файлы, даже необязательно после копирования с перезаписью. Как поймать, пока не понял...

Что интересно, по F3 тотал при этом показывает файл, и после просмотра файла по F3 они нормально извлекаются...
И что ещё странно: код возврата архиватора, когда файлы не были извлечены, всё равно нулевой!

Вообще, всё-таки скорее всего дело в доступе к файлу. С точками останова после вызова архиватора всё работает, но если после первого вызова не делать паузу (первый вызов - это чтение содержимого архива), то баг проявляется.
Skif_off
Сообщения: 1252
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

MVV
А как удалось воспроизвести? У меня путь для распаковки тоже без чего-либо эдакого: D:\Utilities\editor\_edit\PilotEdit\Styles.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Я сам не понимаю, как это воспроизвести, оно то воспроизводится, то нет, независимо от наличия точек останова, просмотра файла по F3 и т.д. Но код возврата архиватора неизменно равен 0.

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

Вообще, кажется, есть объяснение: файлы извлекаются во временную папку, потом перемещаются в папку назначения, а потом временная папка удаляется, при этом используется функция оболочки SHFileOperation. Технически, если оболочка попытается удалить файлы до окончания переноса, мы и получим нашу ситуацию. Надо смотреть, можно ли как-то контролировать процесс...

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

Да, функция перемещения возвращает ошибку, когда баг проявляется!
Код ошибки 183 или 0xB7, и, согласно описанию функции,
DE_ERROR_MAX 0xB7 MAX_PATH was exceeded during the operation.
Хотя, тут описан другой баг этой функции с таким же внутренним поведением.
В общем, надо избавляться от этой тупой проводниковой функции и переносить структуру папок вручную.
Skif_off
Сообщения: 1252
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

MVV писал(а):Технически, если оболочка попытается удалить файлы до окончания переноса, мы и получим нашу ситуацию.
Не совсем уловил :) Правильно ли понимаю, что файл в каталоге назначения удаляется, а потом туда копируется новый? Тогда получается, что тут файл только удаляется и всё?

Дёрнуло что-то меня убрать ConPaste.exe:

Код: Выделить всё

List="%PQA -v -m %AQA"
Extract="%PQA -e -m %AQA {@%LQA}"
ExtractWithPath="%PQA -x -m %AQA {@%LQA}"
так не воспроизводится.

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

P.S. ConPaste.exe: 2016.04.03, SHA1=48079878f45bbfb800be85bb13e2cdb3394e838c
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Если файлы в папке назначения существуют, то они удаляются до начала копирования туда новых.

Копирование новых выполняется переносом извлечённых архиватором файлов из временной папки посредством вызова функции SHFileOperation. По непонятным причинам (погодные явления, фаза луны, чётность номера дня со времён большого взрыва) функция SHFileOperation время от времени не отрабатывает правильно и возвращает ошибку.

Это происходит уже в коде MultiArc, когда ConPaste и архиватор уже успешно отработали, и когда файлы уже извлечены во временную папку.

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

Похоже, баг проявляется только для подпапок в архиве, и только если имя папки назначения совпадает с именем подпапки, из которой извлекаются файлы. И дескриптор этой папки открыт, когда копирование проваливается (попробовал закрыть его принудительно - возникла ошибка обращения к закрытому дескриптору, но функция копирования потом отработала нормально). Перезапускаю тотал, пытаюсь извлечь в папку с таким же именем - ошибка, переименовываю папку или захожу в другую - всё ок. Воспроизводимость 100%.

Рецепт остаётся прежним - избавиться от SHFileOperation.
Ответить