vb6 – 诊断自愈MSI

我工作的应用程序主要是用VB6编写的.

有些用户报告说,当他们启动我的应用程序时,不同的MSI安装程序将自动运行并尝试修复自己的安装.通常这适用于AutoCAD,但有时也适用于其他程序.

通常每次启动应用程序时都会出现这种情况.

我们可以用什么程序来诊断这种情况发生的原因?由于它是第三方的安装程序正在运行,我们无法了解它正在做什么.

AutoDesk确实发布了一些关于此的信息:

> Unexpected installer launches
> Windows Installer displayed unexpectedly

但这些并没有直接提供足够的信息.理想情况下,我希望能够完全防止这种情况发生在我的最终用户身上,而不是仅告诉他们如何避免或清理它.

您的安装程序正在执行Windows Installer所知的目录,文件注册表项,这是AutoCad安装的一部分.

首先,我将打开全局Windows Installer日志记录.这意味着任何Windows Installer活动(包括AutoCad的安装程序)都会写入外部日志文件(%temp%).

> How to Enable Windows Installer Logging

接下来,运行安装程序,然后运行AutoCad安装程序.

现在转到%temp%,您应该找到文件MSIXXXX.LOG – 一个用于安装程序,一个用于AutoCad.打开这些,您可以通过它们工作,并确定AutoCad MSI找到的文件注册表项丢失或更改.

您可能会发现WiLogUtl.exe对此有帮助:

> Wilogutl.exe

运气好的话,您将确定触发自动修复的目录,文件注册表项也在您的安装程序中.如果你真的很幸运,你可以将它识别为一个你不应该安装的项目 – 也许你正在引用一个无论如何都存在的系统组件,受Windows文件保护保护.

如果没有,您将不得不查看像RegFree COM这样的东西将文件从共享目录移动到您的私人目录中并减少注册表冲突.此外,如果您正在使用(使用)Visual C运行时MSM来制作MSI,请考虑使用Microsoft EXE安装程序,或者(最重要的是)将DLL直接放在程序文件夹中,因为我发现MSM可以引起这种问题.

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...