有些用户报告说,当他们启动我的应用程序时,不同的MSI安装程序将自动运行并尝试修复自己的安装.通常这适用于AutoCAD,但有时也适用于其他程序.
通常每次启动应用程序时都会出现这种情况.
我们可以用什么程序来诊断这种情况发生的原因?由于它是第三方的安装程序正在运行,我们无法了解它正在做什么.
AutoDesk确实发布了一些关于此的信息:
> Unexpected installer launches
> Windows Installer displayed unexpectedly
但这些并没有直接提供足够的信息.理想情况下,我希望能够完全防止这种情况发生在我的最终用户身上,而不是仅告诉他们如何避免或清理它.
首先,我将打开全局Windows Installer日志记录.这意味着任何Windows Installer活动(包括AutoCad的安装程序)都会写入外部日志文件(%temp%).
> How to Enable Windows Installer Logging
接下来,运行安装程序,然后运行AutoCad安装程序.
现在转到%temp%,您应该找到文件MSIXXXX.LOG – 一个用于安装程序,一个用于AutoCad.打开这些,您可以通过它们工作,并确定AutoCad MSI找到的文件或注册表项丢失或更改.
您可能会发现WiLogUtl.exe对此有帮助:
运气好的话,您将确定触发自动修复的目录,文件或注册表项也在您的安装程序中.如果你真的很幸运,你可以将它识别为一个你不应该安装的项目 – 也许你正在引用一个无论如何都存在的系统组件,受Windows文件保护保护.
如果没有,您将不得不查看像RegFree COM这样的东西将文件从共享目录移动到您的私人目录中并减少注册表冲突.此外,如果您正在使用(使用)Visual C运行时MSM来制作MSI,请考虑使用Microsoft EXE安装程序,或者(最重要的是)将DLL直接放在程序文件夹中,因为我发现MSM可以引起这种问题.