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

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

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

Maz (27-08-2020 19:31): WinRAR (часть 4)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

   

gyra

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



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

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

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

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

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

Почему опять задерживается русская версия? А при русском разработчике на языке XXX уже давно есть. Не захламляйте тему подобными вопросами.

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

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

Всего записей: 7932 | Зарегистр. 18-02-2006 | Отправлено: 12:00 14-12-2016 | Исправлено: Domin0, 13:37 26-08-2020
pikorembo



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

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

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

Всего записей: 279 | Зарегистр. 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 и не уведомлять только для семерки.

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

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

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

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

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

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

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

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

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

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

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



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

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

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

Всего записей: 279 | Зарегистр. 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 умеет по умолчанию работать в отдельном потоке, не хотелось бы только из-за этого возвращать его в основной поток.

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



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

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

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

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



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

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



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

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

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

Всего записей: 279 | Зарегистр. 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.

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



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

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

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

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

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

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



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

Всего записей: 12360 | Зарегистр. 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 вернулись с этой проблемой к тому, с чего начали. Нормального решения я пока не вижу.

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



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

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

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

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

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

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



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

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



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

Всего записей: 12360 | Зарегистр. 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 для хелпа. Привычнее для пользователей.
 

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

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

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

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

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

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

Всего записей: 1717 | Зарегистр. 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 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

Компьютерный форум Ru.Board » Компьютеры » Программы » WinRAR (часть 3)
Maz (27-08-2020 19:31): WinRAR (часть 4)


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru