我们的Windows应用程序崩溃,当用户确认崩溃对话框时,会注意到相关产品的msi正在启动,就像尝试修复一些损坏一样。据我所知,遇到它的人,我们的应用程序没有任何机制来控制这个其他应用程序的安装程序。这个操作可以吗?如果是这样,操作系统的哪个部分控制它?如果是这样,是否存在安全风险?
答案 0 :(得分:1)
启动的对话框听起来像修复,因此应用程序事件日志中应该有一个MsiInstaller条目。这应该识别正在修复的相关产品,并为您提供相关产品中出现损坏的产品的组件指南。
修复功能有几个入口点。我认为文件扩展名使用,COM对象激活,一些快捷方式,一些类型库的使用。这些基本上使用MsiProvideComponent(),如果找到损坏的组件,它将重新安装包含的功能。
如果我不得不猜测,我会查看两个相关产品,例如文件不一致地安装相同的东西(例如文件)并打破共享组件规则;您的应用删除或更改其他产品安装的文件或注册表数据。但是找到那些MsiInstaller修复条目,并识别组件ID并查看它是什么文件或注册表项,这应该给你一个线索从哪里开始。