Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » WinRAR (часть 3)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109

Открыть новую тему     Написать ответ в эту тему

gyra

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
По вопросам лечения (кряки, патчи и т.д.), а также разблокировки архивов, обращаемся в «Варезник».
Отдельная тема по сборкам WinRAR
Предыдущие части темы: 1-я | 2-я


Официальный русский сайт: win-rar.ru
Официальный e-mail разработчика WinRAR (писать на русском): dev@rarlab.com
 
Финальная английская версия: 5.61 x86 | x64 [01.10.2018]
Финальная русская версия:  5.61 x86 | x64 (02.10.2018)
 
Список изменений на английском языке
(на родном – смотрите файл WhatsNew.txt в дистрибутиве на вашем языке)
Скачать RAR для macOS, FreeBSD, Linux, Android можно здесь.

 
Скачать ранее вышедшие версии также можно с официального сайта.

Версия 3.62 (ru) с подарочным ключом (респект камраду elmorte)

Коллекция всех ранее выходивших версий WinRAR (1995-2018): скачать (211 МБ) [обновлено 26.06.2018]

вместо F.A.Q. || альтернативные архиваторы

Кому не нравится новая тема оформления - скачайте с официального сайта rarlab.com (из раздела Themes) и установите себе WinRAR Classic theme by Francesco Indrio: Стандартная (48x36). Мелкие кнопки (24x24)

В теме активно отвечает на вопросы автор архиватора Евгений Рошал! Ситуация уникальная, прошу пользоваться. :)

Всего записей: 7190 | Зарегистр. 18-02-2006 | Отправлено: 12:00 14-12-2016 | Исправлено: Victor_VG, 09:36 02-10-2018
pikorembo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EugeneRoshal

Цитата:
Так что придется мириться с падением в Win7 в этой ситуации.

На той же странице указано, что автор Total Commander решил эту проблему. Я сейчас проверил, Total Commander прекрасно закрывается и не подвисает (в отличие от 7-Zip, например).

Всего записей: 172 | Зарегистр. 29-01-2014 | Отправлено: 23:41 08-01-2019 | Исправлено: pikorembo, 23:52 08-01-2019
EugeneRoshal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pikorembo
Я поэкспериментировал, вроде бы в Win7 помогает выгружать библиотеку HtmlHelp, но не уведомлять ее об этом через HH_CLOSE_ALL. Но аналогичное действие в Win10 оставляет подвешенный процесс winrar.exe. Так что разве что определять версию Windows и не уведомлять только для семерки.

Всего записей: 995 | Зарегистр. 29-04-2013 | Отправлено: 12:22 09-01-2019
ogenry

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Inoz2000
 

Цитата:
Пакетное переименование zip в fb2.zip проще пареной репы.

В конце концов, так и сделал, но убил немало времени пытаясь найти информацию по ключам и подбору масок.
 
EugeneRoshal
 

Цитата:
Жалоб на новое поведение много, поэтому в 5.70 тут будет опция.

 
Я, собственно говоря, не жаловался, просто пытался решить задачу.
 
Спасибо!

Всего записей: 328 | Зарегистр. 17-04-2003 | Отправлено: 19:09 10-01-2019
EugeneRoshal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ogenry

Цитата:
просто пытался решить задачу.

Пока только использовать старые версии или переименовывать вручную.

Всего записей: 995 | Зарегистр. 29-04-2013 | Отправлено: 22:33 10-01-2019
pikorembo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EugeneRoshal

Цитата:
не уведомлять ее об этом через HH_CLOSE_ALL. Но аналогичное действие в Win10 оставляет подвешенный процесс winrar.exe.

Я попробовал воспроизвести на 1809 build 17763.107 (x64). Но у меня всё работает как надо. Без отсылки HH_CLOSE_ALL процесс не подвисает и мгновенно завершается. Думаю, это наилучшее решение проблемы и для 7-ки, и для 10-ки. Как вариант, можно потестировать HH_INITIALIZE, HH_PRETRANSLATEMESSAGE и HH_UNINITIALIZE.

Всего записей: 172 | Зарегистр. 29-01-2014 | Отправлено: 03:41 11-01-2019 | Исправлено: pikorembo, 04:07 11-01-2019
EugeneRoshal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pikorembo

Цитата:
Без отсылки HH_CLOSE_ALL процесс не подвисает и мгновенно завершается.

Проверил в 1809 build 17763.253 x64 еще раз - 32-битный winrar.exe мгновенно завершается, 64-битный зависает. От чего это зависит - не знаю. Видимо, буду проверять ОС и не отсылать HH_CLOSE_ALL только для Win7.

Цитата:
Как вариант, можно потестировать HH_INITIALIZE, HH_PRETRANSLATEMESSAGE и HH_UNINITIALIZE.

Раз уже HtmlHelp умеет по умолчанию работать в отдельном потоке, не хотелось бы только из-за этого возвращать его в основной поток.

Всего записей: 995 | Зарегистр. 29-04-2013 | Отправлено: 13:31 11-01-2019
pikorembo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EugeneRoshal
 
Удалось выяснить интересную особенность. Если количество ядер CPU > 2, то процесс не зависает, если 2 или 1 — зависает. Номер билда Windows 10 не играет никакой роли.

Цитата:
HtmlHelp умеет по умолчанию работать в отдельном потоке

Кстати. Можно ли отвязать GUI от процесса архивирования? Если в "Фоновом режиме" вызвать контекстное меню иконки в трее, то архивирование приостанавливается. "Прошедшее время" продолжает тикать (в отличие от режима "Пауза"). После выхода из "Фонового режима" интерфейс перерисовывается очень медленно. Жутко раздражает на быстром компьютере наблюдать такое "слайд-шоу".

Всего записей: 172 | Зарегистр. 29-01-2014 | Отправлено: 22:52 11-01-2019 | Исправлено: pikorembo, 23:37 11-01-2019
Pasha_ZZZ



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
EugeneRoshal
Может тогда лучше, как уже когда-то обсуждали, открывать нужный топик открытием URLа? Тогда HH никак не привязывается к процессу WinRAR. Ну не будет закрываться окошко хелпа при закрытии WinRAR - ну и фиг с ним.

Всего записей: 7622 | Зарегистр. 11-03-2002 | Отправлено: 23:07 11-01-2019
pikorembo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EugeneRoshal

Цитата:
В Win10 уже починили.

Оказалось, что ничего не починили. Просто скрыли все ошибки:
 
   
 
x86 и x64. Так что рано или поздно чинить всё равно придётся

Всего записей: 172 | Зарегистр. 29-01-2014 | Отправлено: 00:20 12-01-2019 | Исправлено: pikorembo, 00:30 12-01-2019
EugeneRoshal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pikorembo

Цитата:
Если количество ядер CPU > 2, то процесс не зависает, если 2 или 1 — зависает.

У меня WinRAR.exe x64 без HH_CLOSE_ALL в Win10 подвисает на i7-6700k.

Цитата:
Можно ли отвязать GUI от процесса архивирования?

В Android я отвязал, но там GUI писалось с нуля. Аналогично переделывать многолетние исходники WinRAR я сейчас не готов. Там надо внимательно взаимодействие потоков на всех GUI операциях проверять. Я пока только распаковку 7z выносил в отдельный поток, но и там пришлось обходить deadlocks, когда интерфейсный поток чего-то ждет от вычислительного, вычислительный вызвал GetWindowText, которая ждет ответа от интерфейсного. Оно решаемо, конечно, и может когда доберусь, но по большому счету пока идет распаковка и упаковка, кроме Cancel и Background в WinRAR GUI ничего полезного сделать все равно нельзя.
 
Pasha_ZZZ

Цитата:
Может тогда лучше, как уже когда-то обсуждали, открывать нужный топик открытием URLа?  

Через hh.exe или как-то по-другому? Я уже не помню то обсуждение.

Цитата:
Ну не будет закрываться окошко хелпа при закрытии WinRAR - ну и фиг с ним.

Вопрос в том, что тут хуже, лекарство или болезнь. Падение-то тоже ерундовое, чтобы его увидеть, надо постараться. Включить соответствующий режим taskbar, открыть WinRAR с help'ом, а потом закрыть не по-нормальному, а через Close All. Причем это баг Windows, а не WinRAR.
 
pikorembo

Цитата:
Так что рано или поздно чинить всё равно придётся

Вопрос в том - как чинить, чтобы не ухудшить остальное поведение html help.

Всего записей: 995 | Зарегистр. 29-04-2013 | Отправлено: 11:39 12-01-2019
pikorembo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EugeneRoshal

Цитата:
подвисает на i7-6700k.

Тут, скорее всего, парковка ядер (core parking) повлияла на результат. Видимо, в вашей ОС исполнение процесса идёт на 1-2 ядрах на момент зависания. У меня эта функция отключена в Windows 10, поэтому процесс завершается мгновенно. Тестировал на виртуальной машине.

Цитата:
Вопрос в том - как чинить

Отправлять HH_CLOSE_ALL в обработчике WM_DESTROY оконной процедуры, а не после WM_QUIT? Таким способом мне удалось побороть ошибку в Windows 7, хотя в Windows 10 она по-прежнему скрытая от пользователя (процесс не висит). Но думаю, есть более надёжный способ.

Всего записей: 172 | Зарегистр. 29-01-2014 | Отправлено: 19:45 12-01-2019 | Исправлено: pikorembo, 20:21 12-01-2019
Pasha_ZZZ



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
EugeneRoshal
Цитата:
Через hh.exe или как-то по-другому? Я уже не помню то обсуждение.
Оно в прошлой части... можно через hh.exe, можно ShellExecute/ShellExecuteEx

Всего записей: 7622 | Зарегистр. 11-03-2002 | Отправлено: 20:12 12-01-2019
EugeneRoshal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pikorembo

Цитата:
Отправлять HH_CLOSE_ALL в обработчике WM_DESTROY оконной процедуры, а не после WM_QUIT?

Попробовал. У меня это ничего не изменило. 64-битная версия падает и под 7, и под 10 внутри HH_CLOSE_ALL. 32-битная не падает. Кроме того, winrar.exe стал теперь и под 7 зависать без HH_CLOSE_ALL. Почему не зависал раньше и начал сейчас - не знаю. Нестабильный глюк.
 
Так что в WinRAR вернулись с этой проблемой к тому, с чего начали. Нормального решения я пока не вижу.

Всего записей: 995 | Зарегистр. 29-04-2013 | Отправлено: 21:13 12-01-2019
Pasha_ZZZ



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
EugeneRoshal
ShellExecuteEx + SEE_MASK_NOCLOSEPROCESS + hProcess = PROFIT?
 
(хранить hProcess хелпа, при старте NULL, при каждом вызове хелпа сначала проверять, не NULL ли хранится, и если нет - закрывать перед очередным открытием хэндл, при закрытии WinRAR процесс завершать)

Всего записей: 7622 | Зарегистр. 11-03-2002 | Отправлено: 22:39 12-01-2019
EugeneRoshal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ

Цитата:
при закрытии WinRAR процесс завершать

Через TerminateProcess? Если хелп от штатного HH_CLOSE_ALL падает, от аварийного TerminateProcess тоже можно ждать сюрпризов. Какие-то ресурсы не освободит, что-то недопишет в registry или на диск.
 
Причем, сейчас при обычном закрытии WinRAR, а не через "Close all windows", все работает штатно и без падений. А тут придется всегда закрывать нестандартным образом, и не уверен я, что надежность от этого повысится.

Всего записей: 995 | Зарегистр. 29-04-2013 | Отправлено: 00:06 13-01-2019
pikorembo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EugeneRoshal
 
Нашёл решение, которое у меня 100% сработало (надеюсь, что и у вас тоже). Никаких ошибок и зависаний в Windows 7/10. Нужно убрать HH_CLOSE_ALL, вызвать Sleep(0) после выхода из message loop и финита ля комедия

Всего записей: 172 | Зарегистр. 29-01-2014 | Отправлено: 02:37 13-01-2019
Pasha_ZZZ



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
EugeneRoshal
Цитата:
Через TerminateProcess?
Ну зачем же так сразу, завершать, а не убивать. МС рекомендует найти окошки через EnumWindows и проверить их принадлежность к процессу, и посылать всем найденным WM_CLOSE.
Найти можно примерно так - https://stackoverflow.com/a/21767578

Всего записей: 7622 | Зарегистр. 11-03-2002 | Отправлено: 08:35 13-01-2019
EugeneRoshal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pikorembo

Цитата:
Нашёл решение, которое у меня 100% сработало

Спасибо, кажется, помогло. Только мне пришлось не Sleep(0), а Sleep(200) или Sleep(500) вызывать. 200 без FreeLibrary, 500 с FreeLibrary сразу после Sleep. Даже со Sleep(100) один раз на пять запусков winrar.exe подвисал или падал в виртуальной машине Win7.
 
Причем я пробовал Sleep раньше, но то ли с малым значением, то ли из WM_DESTROY.
 
Pasha_ZZZ

Цитата:
посылать всем найденным WM_CLOSE

Да, как вариант, можно. Но со Sleep лучше тем, что не создается отдельная кнопка на taskbar для хелпа. Привычнее для пользователей.
 

Всего записей: 995 | Зарегистр. 29-04-2013 | Отправлено: 11:04 13-01-2019
EugeneRoshal

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
не создается отдельная кнопка на taskbar для хелпа

Хотя нет, кнопка создается в любом случае. Но все равно со Sleep и стандартным API - правильнее

Всего записей: 995 | Зарегистр. 29-04-2013 | Отправлено: 15:58 13-01-2019 | Исправлено: EugeneRoshal, 15:58 13-01-2019
Evaline

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
EugeneRoshal
Скажите пожалуйста, версия 5.70 будет поддерживать Windows XP SP3? Или Вы планируете поднять системные требования до Windows 7 (NT 6.1) и выше? Спасибо за любой ответ!

Всего записей: 423 | Зарегистр. 05-03-2015 | Отправлено: 16:04 13-01-2019
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109

Компьютерный форум Ru.Board » Компьютеры » Программы » WinRAR (часть 3)

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru

Рейтинг.ru