Ru-Board.club
← Вернуться в раздел «Программы»

» WinRAR (часть 2)

Автор: Benchmark
Дата сообщения: 08.04.2014 01:34
Victor_VG

Цитата:
Правильно, вы забыли что часть файлов заблокирована ядром ОС, а выполняемая операция требует повышенных привилегий

Вроде повышение привилегий есть в todo list'e на будущие версии WinRAR. Но пока увы.


Цитата:
кроме того формат контейнера Zip не поддерживает симлинки, хардлинки

Стандартный pkzip 2.0-совместимый - да, не поддерживает. Но Pkzip/Securezip от PkWare умеет работать и с хард- и с симлинками (может сохранять либо линк, либо файл, на который тот ссылается). По крайней мере *nix-версии.

Это к тому, что формат zip выше того, что был в 2.0, уже давно никакой совместимости не гарантирует.
Автор: Victor_VG
Дата сообщения: 08.04.2014 02:51
Benchmark

Так та же PkWare не просто так в байты 0х4 и 0х5 контейнера Zip пишет минимально необходимую версию распаковщика ещё с первых альфа своего PkZip.

Но в данном случае мы имеем дело с необходимостью использования механизма динамического повышения уровня привилегий (Elevations), но никто не гарантирует что утром в очередной ревизии UAC Микрософт не влепит очередную порцию идиотских ограничений или под благовидным предлогом вообще не выкинет механизм Elevations из системы "за ненадобностью" Коли имеешь дело с сей "почтенной" конторой всегда надо быть готовым к любым пакостям с её стороны.
Автор: EugeneRoshal
Дата сообщения: 08.04.2014 10:53
Dook

Цитата:
В 1 случае процесс прерывается с ошибкой - "! Ошибки при поиске файла, архив синхронизировать невозможно"
Во 2 случае процесс отрабатывает до конца.
Если ключ -as убрать ошибка не появляется.

Для zip используется infozip'овский код -as, для rar я обработку -as писал сам и делал такую проверку. Если при поиске файлов для упаковки произоша ошибка, есть риск, что -as удалит файлы из архива не потому что их уже нет на диске, а потому что мы не смогли их найти. Поэтому rar в таких условиях продолжать операцию отказывается.
Автор: WETUI
Дата сообщения: 08.04.2014 13:49
подскажите батник добавить файлы каждый в отдельный архив в подпапках и корневой не добавляя папки сами в архив

нашол вот это но так добавляется в архив только в корневой папке
@echo off
for %%a in (*) do "C:\Program Files\WinRAR\WinRAR.exe" a -inul "%%a".rar "%%a"
Автор: lucky_Luk
Дата сообщения: 08.04.2014 14:57
WETUI

Цитата:
подскажите батник добавить файлы в архив в подпапках и корневой не добавляя папки сами в архив

Сделать это можно, в обычном случае, выбрав опцию "не сохранять пути". Но на твоем скрине у файлов в разных папках одинаковые имена. Если не будет папок, то не получится.
Автор: Dook
Дата сообщения: 08.04.2014 15:51
EugeneRoshal
Тогда вопрос почему "мы их не смогли найти"? Запускал с правами администратора. Речь же не идет о чтении содержимого фалов занятых системой. А для просмотра дерева папки прав хватает.
Автор: EugeneRoshal
Дата сообщения: 08.04.2014 21:30
Dook

Цитата:
А для просмотра дерева папки прав хватает.

Запустил я:

winrar u -as -r -dh w.rar c:\windows\

у себя и получил:

! Cannot read contents of c:\windows\CSC\v2.0.6\*
Access is denied.
! Cannot read contents of c:\windows\System32\LogFiles\WMI\RtBackup\*
Access is denied.
Автор: Victor_VG
Дата сообщения: 09.04.2014 01:57
EugeneRoshal

Жень о чём и речь - нужны дополнительные привилегии которые при активированном UAC даже "администратору" не доступны ибо UAC сам по себе написан с грубейшими ошибками кои Микрософт править даже под угрозой смерти не станет, да и говоря по честному этот там просто делать некому - этот "механизм" явно писали первокурсники, и далеко не лучшие студенты на потоке. Не просто так его приходится выключать...
Автор: hooddy
Дата сообщения: 09.04.2014 06:38
Victor_VG
да проблема с любым архивом, создаваемым в винраре. В том же 7зипе создаю архив и все нормально. Файл не заблокирован, нет. а вот на методы создания я думал, гляда на кучу опций методов сжатия зипом в 7зип. в винраре то таких нет. Вот архив для примера http://rghost.ru/53906302 (опция Сохранять время отключена). Ошибка арклайт: Не поддерживается (0x80004001) update.cpp:947 Тот же архив созданный в 7зип http://rghost.ru/53906333 обновляется без проблем. Опции создания по умолчанию, кроме уровня сжатия - ультра.
EugeneRoshal
О, великий =) Если речь об опции Сохранять точное время, то ее отключение не помогло.

Ок, подскажите тогда другой плагин для фара, более актуальный. И может который рар архивы обновляет. Да, фар второй версии, последний. Тройка для меня избыточна и тяжела. Ну и арклайт комплектный. Винрар последний стабильный х86.
Автор: Pasha_ZZZ
Дата сообщения: 09.04.2014 06:46
hooddy
Не нравится арклайт - можно перейти обратно на мультиарк... А к нему уже можно что угодно прикрутить.
Автор: hooddy
Дата сообщения: 09.04.2014 07:40
Pasha_ZZZ
Щас засмеете... как это сделать-то? В фаре смотрю оба плагина есть. Тупо удалить арклайт? А чтобы переключаться с одного на другой?
Автор: Pasha_ZZZ
Дата сообщения: 09.04.2014 07:48
hooddy
Вам сюда - http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=31718&glp
Автор: EugeneRoshal
Дата сообщения: 09.04.2014 10:56
hooddy
У вас, похоже, в WinRAR в настройках по умолчанию задан размер тома, больший, чем размер этого архива. В итоге WinRAR в начале архива пишет сигнатуру 50 4B 07 08 (spanned zip), но так как все поместилось в первый том, следующих томов не создает. А arclite, видимо, этой сигнатуры пугается. Хотя в ней нет ничего страшного, и WinRAR, InfoZip, 7-Zip к этому архиву файлы добавляют без проблем.
Автор: Victor_VG
Дата сообщения: 09.04.2014 13:39
hooddy

Значения полей настроек arclite исключающее его конфликт с МА (у меня они совместно работают с момента появления arclite) положил вам в ПМ.
Автор: oshizelly
Дата сообщения: 09.04.2014 15:34
Подскажите, можно ли задать, чтобы при выборе подменю [WinRar] в контекстном меню Windows 7 использовалась в качестве буквы-акселератора не первая буква имени подменю [W], а какая-то другая?

Спасибо!

Добавлено:
Вдогонку вопрос про блокировку доступа к файлу. (Немного похожее обсуждалось чуть выше, но под другим углом.)
Если архивируемый файл открыт в любом приложении, допустим, офисный документ открыт в MS Word, то WinRar отказывается его архивировать, выдавая ошибку:
Cannot open файл.
The process cannot access the file because it is being used by another process.


При этом, к примеру, встроенный ZIP-архиватор Total Commander архивирует тот же самый файл в той же самой ситуации без всяких проблем. Что и логично: мы же не модифицируем этот файл, а просто тихонечко делаем его копию.

Это поведение WinRar можно как-то изменить?
Автор: EugeneRoshal
Дата сообщения: 09.04.2014 18:27
oshizelly

Цитата:
Что и логично: мы же не модифицируем этот файл, а просто тихонечко делаем его копию.

Если оригинал в то время изменяется, есть риск сохранить полфайла до изменений и полфайла после изменений, испортив структуру данных.

Цитата:
Это поведение WinRar можно как-то изменить?

Ключ -dh, опция "Open shared files".
Автор: oshizelly
Дата сообщения: 09.04.2014 19:31
EugeneRoshal 18:27 09-04-2014
Цитата:
Если оригинал в то время изменяется, есть риск сохранить полфайла до изменений и полфайла после изменений, испортив структуру данных.

Спасибо, теперь логика понятна.
Но я всё-таки буду пользоваться ключом -dh, или опцией "Open shared files" на вкладке [Backup], так как в моей ситуации риск такого неприятного совпадения исчезающе мал. У кого-то, конечно, может быть по-другому.

Но в порядке общего рассуждения рискну заметить, что кажется более логичным, чтобы вместо примитивного сообщения об ошибке в конце выдавался бы интерактивный запрос: мол, обнаружены такие-то файлы, занятые другим приложением, хотите их добавить тоже? Да/Нет/Не знаю... Или даже с возможностью выбрать для каждого файла в списке свой вариант.



А что насчёт акселератора контекстного меню, никак не решается?


Добавлено:
Автор файлового менеджера Total Commander согласился разобраться с поддержкой симлинков в WinRAR-овских архивах в TC, но не смог разобраться со структурой заголовков архивов:

Цитата:
But even when it calls the unrar.dll for folders, and runs as admin, the links are not restored. The RARHeaderDataEx structure doesn't contain any indication either that these are links and not normal folders. Therefore I don't currently see any way to extract them.

Если бы ему кто-то подсказал правильное направление, то, глядишь, получим через некоторое время поддержку симлинков в TC.
Если лень регистрироваться на форуме, то могу подсказать адрес почты Гислера.
Автор: EugeneRoshal
Дата сообщения: 09.04.2014 20:08
oshizelly

Цитата:
А что насчёт акселератора контекстного меню, никак не решается?

На уровне WinRAR только если языковые ресурмы самому править.

Цитата:
Если бы ему кто-то подсказал правильное направление, то, глядишь, получим через некоторое время поддержку симлинков в TC.
Если лень регистрироваться на форуме, то могу подсказать адрес почты Гислера.

Я посмотрел. Во-первых, unrar.dll симлинки на каталоги умеет распаковывать. Во-вторых, он для виндовых симлинков на каталоги возвращает HostOS==2 (Windows) и FILE_ATTRIBUTE_REPARSE_POINT, установленный в атрибутах файла. По этим признакам можно отличить симлинк на каталог и попросить unrar.dll распаковать его, вместо создания обычного каталога своими силами.

Если Гислеру по каким-то причинам удобнее иметь отдельный флаг "симлинк" вместо метода идентификации, указанного выше, он может мне написать, обсудим варианты реализации. Раньше он мне на email по вопросам, связанным с rar, писал неоднократно. Сочтет нужным, напишет с конкретикой и примерами и в этом случае, будем разбираться.
Автор: hooddy
Дата сообщения: 09.04.2014 22:22
EugeneRoshal

Цитата:
У вас, похоже, в WinRAR в настройках по умолчанию задан размер тома, больший, чем размер этого архива

Да, так и есть. Но ведь в винраре нет опции не указывать размер тома. Немного получается непродуманно, извините, либо я недопонимаю. Если указываемый размер тома больше создаваемого архива, то логично пропускать эту опцию. Разве нет?
Victor_VG
Ок, смотрю личку.

В принципе, проблема-то не такая и проблема. Я не против там, пусть винрар делает то что он делает, в смысле я не с претензиями. Причину выяснил, да и ладно.
Автор: Victor_VG
Дата сообщения: 09.04.2014 23:31
hooddy

Да вот сейчас к примеру у skipik всё неожиданно стало падать и я думаю что у него сбились настройки - у меня не падает, ладно, погляжу что у него получится...
Автор: EugeneRoshal
Дата сообщения: 10.04.2014 10:06
hooddy

Цитата:
Но ведь в винраре нет опции не указывать размер тома.

Есть. Оставьте поле размера пустым.

Цитата:
Если указываемый размер тома больше создаваемого архива, то логично пропускать эту опцию. Разве нет?

Размер архива мы узнаем, когда архив уже создан и 4 байта маркера "том" уже записаны в начале архива. Будь это однобитовый флаг, можно было бы вернуться и сбросить его. Но 4 байта в начале быстро не убрать.
Автор: hooddy
Дата сообщения: 10.04.2014 11:05
EugeneRoshal

Цитата:
Есть. Оставьте поле размера пустым

Вот об этом я как-то не подумал. Забыл, что из коробки это поле пустое. В общем, так все работает. Спасибо.
Автор: ItsJustMe
Дата сообщения: 11.04.2014 15:08
EugeneRoshal
Я опять о симлинках. Раньше, вроде, WinRAR успешно создавал симлинки на папки. А теперь вместо них - просто файлики. Файлик типа ".symlink" Симлинки на файлы создаются успешно, а вот на папки - уже нет. WinRAR работает в режиме elevated.
Автор: EugeneRoshal
Дата сообщения: 11.04.2014 20:51
ItsJustMe
Я проверил, при распаковке RAR5 - создает. Архив, конечно, должен быть создан с опцией -ol ("Store symbolic links as links" в GUI). Или вы о другом формате?
Автор: Dook
Дата сообщения: 12.04.2014 10:30
EugeneRoshal

Цитата:
Запустил я:

winrar u -as -r -dh w.rar c:\windows\

у себя и получил:

! Cannot read contents of c:\windows\CSC\v2.0.6\*
Access is denied.
! Cannot read contents of c:\windows\System32\LogFiles\WMI\RtBackup\*
Access is denied.


Согласен. Но проблема в том что в обновляемом архиве этих папок тоже нет. Так почему бы винрару не проверять в такой ситуации наличие данных папок/файлов в архиве и если их нет то продолжать процесс?

Автор: Xishnik2014
Дата сообщения: 12.04.2014 10:43
Не знаю как вы, но я бы порекомендовал бы программу 7-zip. Если что, я его скачал отсюда:
[no]7-zip с кейгенам[/no]
Автор: Victor_VG
Дата сообщения: 12.04.2014 15:33
Xishnik2014

Во первых, прочтите лицензию на 7-Zip, во вторых идите в тему по данному пакету. Тут это спам.

Добавлено:
Dook

Ошибка в постановке задачи - цель синхронизации сделать две файловые системы одинаковыми....
Автор: ItsJustMe
Дата сообщения: 12.04.2014 22:21
EugeneRoshal
Основной (и вообще-то единственный) источник симлинков у меня - Linux. Поэтому формат архивов, их содержащих - .tar.whatever
Провел эксперимент: запаковал на Linux папку с файлами с двумя симлинками - на файл и на папку. Создал два архива в Linux: test.tar.xz и test.rar (rar a -r -m5 -s -ol test.rar test). Rar в Linux: 5.10 beta 2.
Распаковал их в Windows (WinRAR 5.10 beta 2 elevated).
Результат: test.tar.xz распаковался со всеми файлами и с двумя симлинками. Тип каждого .symlink Причем, если по каждому из них кликнуть правой кнопкой и выбрать "Расположение файла", то explorer перейдет на нужный объект - с симлинка на файл перейдет на правильный файл, с симлинка на папку перейдет на правильную папку. Однако симлинк на папку не очень-то рабочий: если его "два разА дергануть за пимпочку", в папку он не перейдет. Хотя раньше симлинки на папки работали нормально, то есть были рабочими симлинками на папки. Лень вставлять скрин окна, думаю, мысль и так понятна, но если надо, то я поднатужусь.
Но дальше интереснее. Если открыть архив test.rar, то там оба этих симлинка присутствуют. Но если его распаковать (WinRAR elevated, of course), то ни одного симлинка создано вообще не будет. Все файлы распакуются, но симлинки нет.

PS: Я таки поднатужился. Аж весь вспотел. Вот:

Папка test2 (сверху), это то, что было извлечено из нутра test.tar.xz. g2 ссылается на do-get, z2 - на папку zzz. Знаю, файл для ссылки надо было сделать более удобоваримым, txt например. Не подумал. Но g2 - это рабочий симлинк, хоть и выглядит непрезентабельно. А вот z2 - нерабочий. winlink - это симлинк на ту же папку zzz, созданный с помощью mklink, для примера, как должен выглядеть рабочий симлинк на папку.

Папка test (снизу) - это из test.rar Как можно видеть, вообще ни одного симлинка нет. Но внутри самого test.rar они присутствуют. Вот:


PS2: Как оказалось, созданный rar был версии 2.9. А я специально долго всматривался подслеповатыми глазами на список опций консольного rar в Linux - искал, нет ли где указания на версию создаваемого архива. Долго-долго листал. Видимо, я и вправду окончательно ослеп, потому, что не нашел, и решил, что значит архив по умолчанию RAR5. А он, гад, оказался все-таки 2.9 Видимо, это проделки контрреволюции.

PS3 and Conclusions:
Проделал тот же эксперимент на RAR5. С ним все в порядке: все создалось и все работает. Значит, проблема только в распаковке симлинков на папки из архивов tar. Да, опять повторю, что раньше, во времена WinRAR 5.00, симлинки на папки из tar создавались нормально. Мне сложно сказать, когда они перестали создаваться, то ли это WinRAR 5.10 beta2 чудит, то ли это проявилось раньше, уже в 5.01 - не знаю. Не уследил.

btw, может, также сделать для консольной версии форматом архива по умолчанию RAR5?
Автор: Victor_VG
Дата сообщения: 13.04.2014 00:08
ItsJustMe
EugeneRoshal

По поводу симлинков у меня есть общее соображение - похоже причины в ошибках WinAPI. Если что пошли втроём ко мне в ПМ - думаю сначала самим стоит понять что происходит, а после выдвигать чётко сформулированную гипотезу.
Автор: EugeneRoshal
Дата сообщения: 13.04.2014 13:41
ItsJustMe

Цитата:
проблема только в распаковке симлинков на папки из архивов tar

Я сейчас выложил новую сборку английской beta 2 на www.rarlab.com. Посмотрите, пожалуйста. Там это должно работать правильно.

Цитата:
btw, может, также сделать для консольной версии форматом архива по умолчанию RAR5?

Пока рано. С обновления формата еще не прошло одного года, много софта его еще не понимает.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160

Предыдущая тема: Прога для поиска картинок в интернете.


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.