Может ли сбой приложения вызвать запуск установщика другого продукта

Наше приложение для Windows дает сбой, и когда пользователь подтверждает диалоговое окно сбоя, он замечает, что запускается msi для связанного продукта, как будто пытаясь исправить вызванное повреждение. Насколько я понял от человека, который столкнулся с этим, наше приложение не имеет никакого механизма для управления установщиком этого другого приложения. Возможна ли эта операция? Если да, то какая часть операционной системы управляет этим? Если да, то есть ли угроза безопасности?


person wbogacz    schedule 26.02.2015    source источник
comment
См. этот другой вопрос: «как я могу определить, что вызывает повторное самовосстановление установщика Windows»> stackoverflow.com/questions/5501028/   -  person StayOnTarget    schedule 12.07.2017


Ответы (1)


Этот диалог, который запускается, звучит как ремонт, поэтому в журнале событий приложения должна быть запись MsiInstaller. Это должно идентифицировать тот связанный продукт, который ремонтируется, и дать вам руководство по компоненту того, что в этом связанном продукте оказалось поврежденным.

Есть несколько точек входа в функцию восстановления. Использование расширения файла, активация COM-объекта, некоторые ярлыки, я думаю, также некоторое использование библиотек типов. В основном они используют MsiProvideComponent(), который переустановит содержащую его функцию, если обнаружит поврежденный компонент.

Если бы мне пришлось угадывать, я бы посмотрел на такие вещи, как два связанных продукта, которые непоследовательно устанавливают одни и те же вещи (например, файлы) и нарушают правила общих компонентов; ваше приложение удаляет или изменяет файл или данные реестра, которые были установлены другим продуктом. Но найдите эти записи восстановления MsiInstaller, определите идентификатор компонента и посмотрите, какой это файл или элемент реестра, это должно дать вам ключ к разгадке, с чего начать.

person PhilDW    schedule 28.05.2015