Наше приложение для Windows дает сбой, и когда пользователь подтверждает диалоговое окно сбоя, он замечает, что запускается msi для связанного продукта, как будто пытаясь исправить вызванное повреждение. Насколько я понял от человека, который столкнулся с этим, наше приложение не имеет никакого механизма для управления установщиком этого другого приложения. Возможна ли эта операция? Если да, то какая часть операционной системы управляет этим? Если да, то есть ли угроза безопасности?
Может ли сбой приложения вызвать запуск установщика другого продукта
Ответы (1)
Этот диалог, который запускается, звучит как ремонт, поэтому в журнале событий приложения должна быть запись MsiInstaller. Это должно идентифицировать тот связанный продукт, который ремонтируется, и дать вам руководство по компоненту того, что в этом связанном продукте оказалось поврежденным.
Есть несколько точек входа в функцию восстановления. Использование расширения файла, активация COM-объекта, некоторые ярлыки, я думаю, также некоторое использование библиотек типов. В основном они используют MsiProvideComponent(), который переустановит содержащую его функцию, если обнаружит поврежденный компонент.
Если бы мне пришлось угадывать, я бы посмотрел на такие вещи, как два связанных продукта, которые непоследовательно устанавливают одни и те же вещи (например, файлы) и нарушают правила общих компонентов; ваше приложение удаляет или изменяет файл или данные реестра, которые были установлены другим продуктом. Но найдите эти записи восстановления MsiInstaller, определите идентификатор компонента и посмотрите, какой это файл или элемент реестра, это должно дать вам ключ к разгадке, с чего начать.