EugeneRoshal
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору KonstantinPolyakov Цитата: Наверное, проще всего включить номер версии прямо в имя по типу RarExtInstaller_1.exe/RarExtPackage_1.msix и никогда не запускать при установке, если файл уже есть. | Не хотелось бы иметь постоянно меняющиеся имена файлов в дистрибутиве, так как они за собой потянут изменения в Descript.ion и Uninstall.lst. Я у себя это могу автоматизировать, но если кто из переводчиков захочет локализовать эти файлы, с переменными именами ему добавится работы. Альтернатива - писать в Registry что-то типа PackageBuild с номером версии msix, и устанавливать, только если новый номер больше. Недостаток обоих этих подходов в том, что мы не знаем, установлен ли на самом деле msix, и установлен ли он корректно. Может пользователь перезапустил установку, чтобы исправить какие-то существующие проблемы с отсутствующим или поврежденным package. Почему я и хотел сделать это средствами PackageManager, он должен знать состояние пакетов и переустановить отсутствующий. Как костыль для замены ForceUpdateFromAnyVersion(false), можно поискать через PackageManager установленные пакеты и их версии и самому сравнить с новой. Цитата: Вообще, в механизме регистрации Win32 через sparse package все очень сырое. | Согласен. Уже который месяц ищу обходные пути для всевозможных связанных с этим проблем. Само решение регистрировать shell extensions через подписанные msix пакеты, на мой взгляд, далеко не лучшее. Можно было обязать разработчиков для каждого пункта меню в IExplorerCommand назначать уникальный GUID, а пользователям предоставить инструмент для запрета пунктов контекстного меню по GUID наподобие "Customize notification icons" для иконок в taskbar tray. |