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

» WinRAR (часть 2)

Автор: regist123
Дата сообщения: 28.10.2015 10:01
Victor_VG
какое отношение FAR имеет к этой теме? Пожалуйста, обсуждайте его ошибки и их фиксы в соответствующей теме.
Автор: frost745
Дата сообщения: 28.10.2015 10:56
WinRAR 5.30 Beta 6

Цитата:

1. Исправлены ошибки:

а) команда "Печать файла" не работала с файлами HTML в Windows 10;

б) если к файлу-отчёту был указан относительный путь, команда
"Создать отчёт" создавала файл в папке, откуда был запущен WinRAR,
а не в текущей папке WinRAR;

в) в некоторых случаях не работало масштабирование текста в главном
окне и в окне с лицензией в SFX-архиве в режиме экрана с высоким
значением DPI, из-за чего текст отображался мельче, чем нужно;

г) изменения в обработке повреждённых архивов для более надёжной работы
с некорректными архивами ZIP и ARJ, а также с образами ISO;

д) используемые в RAR команды "l" и "v" добавляли ненужные пробелы
после имён файлов короче 12 символов.


Автор: Aniskin
Дата сообщения: 28.10.2015 14:03
EugeneRoshal
Очень не рекомендую пытаться определить папку назначения самостоятельно при операции D&D. Я могу скидывать файлы в окно Проводника на следующие элементы:

1) Дерево в левой части окна.
2) Текущая папка.
3) Любая из папок в текущая папке.
4) В окне Проводника могут быть дополнительные панели, способные принимать drop-объекты.

И в каждом случае папка назначения будет своей. И гарантированно определить, куда я перекидываю файлы imho не возможно. Но если уж реально хочется использовать хаки, то рекомендую просто определять, что target-окно является окном, принадлежащим процессу explorer.exe. Если это условие выполняется, то в IDataObject отдавать только CF_FILEDESCRIPTOR/CF_FILECONTENTS. Проводник не требует, что бы передаваемые потоки обеспечивали рабочий метод IStream.Seek, поэтому можно смело отдавать распаковываемые на лету данные без сохранения их во временный файл.
Автор: beathiful
Дата сообщения: 28.10.2015 15:43
При запуске выскакивает ошибка http://joxi.ru/Dr8KnwgCn17oA6
Когда извлекаю вот что даёт http://joxi.ru/E2pvkJPTVq3YrY
Искал везде в гугле,люди сталкивались с такой проблемой но решение не находили кажется
Сможете вы мне чем-то помочь?,компьютер купил 3 дня назад,винда 10,вот такая проблема с WinRAR.Пробовал Z-zip тоже такая-же проблема,не знаю что делать,подскажите нужно срочно решать проблему
Автор: Pasha_ZZZ
Дата сообщения: 28.10.2015 15:54
beathiful
Антивирус удаляет эту шнягу, к ВинРАРу не относится никаким боком.
Автор: beathiful
Дата сообщения: 28.10.2015 16:06
Щас попробую отключить антивирус, отпишу
Автор: EugeneRoshal
Дата сообщения: 28.10.2015 16:23
Aniskin

Цитата:
Я могу скидывать файлы в окно Проводника на следующие элементы

Да, вы правы. Знание текущей папки проводника нам для drag&drop не поможет. Значит этот вариант, к сожалению, отпадает.

Цитата:
Но если уж реально хочется использовать хаки, то рекомендую просто определять, что target-окно является окном, принадлежащим процессу explorer.exe. Если это условие выполняется, то в IDataObject отдавать только CF_FILEDESCRIPTOR/CF_FILECONTENTS.

Насколько я понимаю, при использовании CF_FILEDESCRIPTOR и CF_FILECONTENTS даже не нужно проверять explorer.exe это или нет. Но проблема в том, что переделать распаковку всех поддерживаемых форматов на работу с IStream слишком трудоемко. Кроме того, NTFS alternate data streams при использовании CF_HDROP и временных файлов распаковываются и переносятся, а при использовании CF_FILEDESCRIPTOR и CF_FILECONTENTS теряются.

beathiful
Что-то у вас WinRAR время модификации файлов установить не может. Посмотрите, включена ли по умолчанию опция "Set modification time" на странице "Advanced" диалога распаковки.

А во втором вашем примере в чем именно проблема? Не распаковывается exe файл?

Если вы WinRAR устанавливали не сами, я бы удалил его через uninstall и установил заново, чтобы не зависеть от чужих настроек. Только если в каталоге WinRAR есть ключ регистрации rarreg.key, скопируйте его куда-нибудь перед этим, чтобы не потерять в процессе переинсталляции.

Впрочем, Pasha_ZZZ может быть прав, и дело может быть в антивирусе, а не WinRAR.
Автор: Pasha_ZZZ
Дата сообщения: 28.10.2015 16:39
EugeneRoshal
Цитата:
Что-то у вас WinRAR время модификации файлов установить не может.
ЕХЕшник уже антивирь грохнул - вот и не может установить время модификации
Автор: Aniskin
Дата сообщения: 29.10.2015 03:30
EugeneRoshal

Цитата:
Насколько я понимаю, при использовании CF_FILEDESCRIPTOR и CF_FILECONTENTS даже не нужно проверять explorer.exe это или нет.

А я думал, что у вас проблема в том, что многие (большенство) приложений, умеющих принимать файлы через операцию D&D, игнорируют тот факт, что существуют форматы CF_FILEDESCRIPTOR и CF_FILECONTENTS и ждут только CF_HDROP, и отсутствие CF_HDROP приводит к тому, что пользователи начинают жаловаться, что D&D не работает, хотя по факту из пары источник/приемник не работает лишь приемник.
Автор: EugeneRoshal
Дата сообщения: 29.10.2015 11:31
Aniskin
Я давно этим кодом занимался, но, насколько я помню, в IDataObject::EnumFormatEtc можно ведь вернуть несколько форматов, и CF_HDROP, и CF_FILEDESCRIPTOR с CF_FILECONTENTS. И отдавать соответственно. Что приемник понимает, тем и воспользуется. Но переделать всю распаковку на поддержку IStream - задача еще та.
Автор: Liandri
Дата сообщения: 29.10.2015 12:14
Напомню ещё про особенности традиционного d&d:

1. Сразу после переноса окно-получатель зависает и становится неюзабельным до тех пор пока перенос не завершится.

2. Нельзя устроить сразу несколько операций. В WinRAR получаем ошибку "Новая операция перетаскивания невозможна, пока активна ранее начатая." (причём в самом Проводнике такого ограничения нет)

3. Если окно-получатель это умеет, файлы перетаскиваются точно на позицию курсора, где пользователь отжал ЛКМ. Это в разных ситуациях может быть как полезным, так и лишним.
Автор: ANDE2003
Дата сообщения: 29.10.2015 12:23
EugeneRoshal

хочется чтобы WinRAR умел удалять файлы из архивов 7z, из zip и rar удаляет, из 7z нет
Автор: Victor_VG
Дата сообщения: 29.10.2015 12:34
ANDE2003

Так для сего дела архив надо перепаковать, а 7zxa.* это только распаковщик - VERSION_INFO :: 7z Standalone Extracting Plugin. Собственно архиватор это либа 7z.dll и 7z.so для UNIX/LINUX, а 7z*.exe/7z/7za/7zr это её оболочки для Win, UNIX/LINUX. Далее думаю всё ясно?
Автор: GORA2
Дата сообщения: 29.10.2015 12:44
Victor_VG

Цитата:
Собственно архиватор это либа 7z.dll и 7z.so для UNIX/LINUX, а 7z*.exe/7z/7za/7zr это её оболочки

Ошибаетесь. 7za и 7zr это автономные архиваторы и библиотека 7z.dll им не требуется

Добавлено:
ANDE2003

Цитата:
хочется чтобы WinRAR умел удалять файлы из архивов 7z

Пользователям 7-Zip тоже бы хотелось, чтобы 7-Zip мог не только открывать rar архивы, но ведь WinRAR же этого не позволяет делать 7-Zip-у
Автор: Victor_VG
Дата сообщения: 29.10.2015 12:59
GORA2

Согласен. Глянул логи зависимостей.
Автор: Aniskin
Дата сообщения: 29.10.2015 14:15
EugeneRoshal

Цитата:
Я давно этим кодом занимался, но, насколько я помню, в IDataObject::EnumFormatEtc можно ведь вернуть несколько форматов, и CF_HDROP, и CF_FILEDESCRIPTOR с CF_FILECONTENTS. И отдавать соответственно. Что приемник понимает, тем и воспользуется.
Все верно. Но тот же Проводник при наличии CF_HDROP будет использовать именно CF_HDROP. Т.е. даже реализовав CF_FILEDESCRIPTOR/CF_FILECONTENTS одновременно с CF_HDROP все равно Проводник запросит CF_HDROP и нужно будет создавать временные файлы.

Liandri

Цитата:
Сразу после переноса окно-получатель зависает и становится неюзабельным до тех пор пока перенос не завершится.
Зависит от источника. Если источник реализует IAsyncOperation, то зависания не будет. https://msdn.microsoft.com/en-us/library/windows/desktop/bb776904%28v=vs.85%29.aspx#async
Автор: EugeneRoshal
Дата сообщения: 29.10.2015 15:02
Aniskin

Цитата:
Но тот же Проводник при наличии CF_HDROP будет использовать именно CF_HDROP. Т.е. даже реализовав CF_FILEDESCRIPTOR/CF_FILECONTENTS одновременно с CF_HDROP все равно Проводник запросит CF_HDROP и нужно будет создавать временные файлы.

Этого я не знал. Спасибо, что предупредили. Значит при использовании только штатных средств без хакерства CF_FILEDESCRIPTOR/CF_FILECONTENTS нам тоже не помогут.

Фактически остается только отдавать через drag&drop временный файл нулевой длины с уникальным именем, искать его по ReadDirectoryChangesW и распаковывать в найденный каталог. А если ничего не нашли, просить пользователя повторить drag&drop и использовать CF_HROP с временными файлами. Корявенько, но другие варианты еще менее реалистичны.
Автор: Aniskin
Дата сообщения: 29.10.2015 15:34
EugeneRoshal

Цитата:
Корявенько

Я бы даже сказал корявищно.


Цитата:
но другие варианты еще менее реалистичны.
Я бы предложил для любителей D&D альтернативу. В своем продукте (кстати, использующем в том числе unrar.dll) я создаю для выбранных элементов контекстное меню, в котором есть список текущих открытых в окнах Проводника папок. И выбор конкретного пункта начинает извлечение в соответствующую папку. По большому счету это требует даже меньше телодвижений, нежели D&D.
Автор: Liandri
Дата сообщения: 29.10.2015 15:34
Aniskin
Цитата:
Зависит от источника. Если источник реализует IAsyncOperation, то зависания не будет.
Я проверял случаи WinRAR > Explorer и Explorer > Explorer. Во втором случае зависания нет. Наверное, в Проводнике d&d реализован как-то по-особому.
Автор: Victor_VG
Дата сообщения: 29.10.2015 15:49
Liandri

Вполне возможно, т.к. исходники ОС закрыты, а после утечки части исходников NT4 я про их публикацию или предоставление ограниченного ознакомления с ними кому либо кроме особо доверенных партнёров мелкософт ни от кого из коллег не слышал.
Автор: Aniskin
Дата сообщения: 29.10.2015 16:07
Liandri

Цитата:
Наверное, в Проводнике d&d реализован как-то по-особому.

В Проводнике D&D реализован как и везде, но с поддержкой IAsyncOperation. Поэтому и не виснет.
Автор: EugeneRoshal
Дата сообщения: 29.10.2015 16:08
Aniskin

Цитата:
По большому счету это требует даже меньше телодвижений, нежели D&D.

Не спорю, это может быть удобно, и я бы не исключал что-нибудь подобное в будущих версиях WinRAR. Но это не решит проблемы с теми пользователями, кто привык к d&d и не хочет разбираться в особенностях интерфейса отдельно взятого приложения. А таких много.

Потом это ведь только частичная замена d&d. Как вы сами заметили, пользователь может перетащить файлы на любую из папок в текущей папке проводника, а не только в текущую папку.
Автор: Liandri
Дата сообщения: 29.10.2015 17:06
Aniskin
Я плохо вчитался в первый ответ. Выходит что WinRAR не поддерживает IAsyncOperation.
Автор: Aniskin
Дата сообщения: 29.10.2015 17:37
EugeneRoshal

Цитата:
кто привык к d&d и не хочет разбираться в особенностях интерфейса отдельно взятого приложения. А таких много.

У каждого разработчика есть право на использование (сомнительных на мой взгляд) механизмов типа создания временного файла нулевой длины с уникальным именем и его поиска с помощью ReadDirectoryChangesW, но замечу, что далеко не все хотелки пользователей нужно реализовывать. Если бы у меня был свой WinRar с преферансом и барышнями, то я бы ни за что не стал использовать подобные хаки. Хотите использовать D&D - терпите временные файлы. Не хотите временные файлы - используйте методы извлечения самого WinRar. Но это лишь мое мнение, у вас как у разработчика свое видение вашего продукта.

А почему бы не сделать File System Filter Driver? Это куда надежнее.
Автор: Liandri
Дата сообщения: 29.10.2015 18:01

Цитата:
используйте методы извлечения самого WinRar

Лично у меня к этой функции также есть претензия. Окно извлечения грузится секунд 5-6 порой, потому что в системе много дисков, и все они должны раскрутиться чтобы окно отвисло. С Bandizip аналогичные тормоза также наблюдаются, но задержка всегда намного меньше (почему так - не понимаю).

Есть несколько папок, куда регулярно распаковываю файлы. Каждый раз когда пользуюсь WinRAR - пальцы на готове, путь в буфере, но эти тормоза постоянно огорчают. Хотелось бы какую-нибудь менюшку с наиболее часто используемыми путями - но в WinRAR она также привязана к окну извлечения. Опять же, в Bandizip она отдельная, но (для меня) неюзабельна - нельзя выставить опцию "создать папку с именем архива" для этого способа.
Автор: EugeneRoshal
Дата сообщения: 29.10.2015 18:20
Aniskin

Цитата:
Если бы у меня был свой WinRar с преферансом и барышнями, то я бы ни за что не стал использовать подобные хаки. Хотите использовать D&D - терпите временные файлы. Не хотите временные файлы - используйте методы извлечения самого WinRar.

Пока в WinRAR дело так и обстоит, и сейчас я не знаю, буду ли использовать ReadDirectoryChangesW.

Цитата:
А почему бы не сделать File System Filter Driver? Это куда надежнее.

У меня еще не было возможности оценить надежность ReadDirectoryChangesW. Все же думаю, что проблема такого подхода не в надежности этой функции, а в применимости только к drop targets на локальной файловой системе.

Liandri

Цитата:
Хотелось бы какую-нибудь менюшку с наиболее часто используемыми путями - но в WinRAR она также привязана к окну извлечения.

Может быть добавить выпадающий список справа от кнопки Extract To на toolbar. В следующих версиях можно будет подумать.
Автор: Fintrum
Дата сообщения: 29.10.2015 23:16
Подскажите пожалуйста,

1) Возможно ли использовать WinRAR портативно и хранить все настройки в одной папке?
2) Как лучше настроить Sfx-архив RAR5 для наибольшей скорости распаковки? (размер словаря и т.п.)
Автор: EugeneRoshal
Дата сообщения: 30.10.2015 00:19
Fintrum

Цитата:
1) Возможно ли использовать WinRAR портативно и хранить все настройки в одной папке?

Почитайте про winrar.ini в разделе "Configuration settings" winrar.chm.

Цитата:
2) Как лучше настроить Sfx-архив RAR5 для наибольшей скорости распаковки? (размер словаря и т.п.)

Не задирать размер словаря слишком сильно, чтобы точно хватило памяти одним куском, без фрагментации словаря. Скажем, не больше 128 MB. Остальное не особо важно, распаковка у RAR5 и так быстрая.
Автор: no404error
Дата сообщения: 30.10.2015 00:59
EugeneRoshal
А что за косяк с тем что из GUI нельзя убрать все таймстампы?

В консоли можно выбрать -tsm0 -tsc0 -tsa0 а в GUI аналогов нет.

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

-cfg- -htb -k -m5 -ma5 -mcd+ -mce+ -md1g -oh -oi:0 -ol -ow- -qo- -r -s -tk- -tl- -tsm0 -tsc0 -tsa0

p.S. Добавьте строку и/или профили. Например CloneX86/CloneX64.
Автор: Fintrum
Дата сообщения: 30.10.2015 09:26
EugeneRoshal
Спасибо большое, но вот заметил один момент, при просмотре в портативном WinRAR-е без ассоциаций, у архивов нет иконок, только у .zip папка с замочком. Не думали добавить опцию, где можно вручную вписать расширения, к которым будет применяться стандартный значок WinRAR или хотя бы к основным форматам архивов?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160

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


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