EugeneRoshal
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору KonstantinPolyakov Цитата: Сейчас сообщения об обновлении программы от Windows (и AppHang) не заметил. | Это хорошо. Из нерешенных проблем осталось непредсказуемое поведение меню "Show more options". Некоторые копии Windows 11 сами переносят в это меню пункты, добавленные IExplorerCommand в основное меню. Некоторые копии - нет. Причем, это наблюдается не только для команд WinRAR, но и для того же "Open in Windows Terminal". Отчего это зависит и как запретить этот автоперенос, я не понял. Если мы дополнительно реализуем IContextMenu и работает этот автоперенос, в "Show more options" получаем дублирование. Если не реализуем и перенос не работает, там вообще нет пунктов WinRAR. Пока я добавил опцию "Legacy context menus", управляющую регистрацией IContextMenu, но лучше бы найти способ отключить этот автоперенос, всегда регистрировать IContextMenu и обойтись без опции. Причем, если мы запускаем WinRAR из этих автоперенесенных в старое меню пунктов, окно WinRAR размещается под остальными открытыми окнами, и победить это я пока не смог. SetForegroundWindow не помогает. При запуске из основного меню или пунктов IContextMenu такой проблемы нет. Цитата: Есть ли смысл постоянно хранить RarExtInstaller.exe/RarExtPackage.msix и файлы RarExt*.png в папке программы? | Есть. Если по какой-то причине слетела регистрация этого пакета, его можно перерегистрировать, выключив и включив "Integrate WinRAR into shell" в настройках. *.png нужны для иконки в taskbar при запуске из контекстного меню. И потом, там всей экономии 200кб. Цитата: регистрировать расширения оболочки, а затем удалять эти файлы | Еще сложность была бы в том, чтобы определить момент окончания регистрации. При установке поверх уже загруженного пакета она может занимать десятки секунд, а если ждать ее в .get(), в какой-то момент процесс прибивается с тем самым AppHang. Пришлось бы удалять эти файлы просто по истечению какого-то времени, без использования get и wait_for. Цитата: А удаление расширения оболочки делать через PowerShell командой вроде такой: | Но проще вызвать RemovePackageAsync из RarExtInstaller.exe. Экономия на этих двух небольших файлах не стоит сопутствующих усложнений. |