Internet explorer 为什么IE在删除ActiveX安装程序时';正在安装什么?
我有一个ActiveX控件,作为CAB提供。我有一个HTML页面,它只是一个带有cab名称和clsid的对象标记(因此页面上还没有其他内容) 这导致IE询问有关安装ActiveX控件的问题,我允许这样做。它下载CAB,提取安装程序并开始运行它 当MSIEXEC运行并尝试安装控件时,IE决定删除.MSI文件所在临时目录中的文件。有时,文件被进程锁定,删除失败,然后安装成功,但大多数情况下,删除成功,然后MSIEXEC会记录MSI文件不存在的错误 我可以在PROCMON看到这一切,但我不知道为什么。它在Windows和IE的多个版本中都是可复制的。它不仅仅是删除MSI,而是删除临时目录中的文件 我得到的唯一线索是文件的修改日期是它在构建机器上创建的日期。这不是我可以不断更新的东西(它在Web服务器上的CAB中)——我不能每五分钟构建一次CAB来保持修改后的日期新鲜——所以,我不认为是这样,但我想把它作为一个线索提一下Internet explorer 为什么IE在删除ActiveX安装程序时';正在安装什么?,internet-explorer,activex,windows-installer,cab,Internet Explorer,Activex,Windows Installer,Cab,我有一个ActiveX控件,作为CAB提供。我有一个HTML页面,它只是一个带有cab名称和clsid的对象标记(因此页面上还没有其他内容) 这导致IE询问有关安装ActiveX控件的问题,我允许这样做。它下载CAB,提取安装程序并开始运行它 当MSIEXEC运行并尝试安装控件时,IE决定删除.MSI文件所在临时目录中的文件。有时,文件被进程锁定,删除失败,然后安装成功,但大多数情况下,删除成功,然后MSIEXEC会记录MSI文件不存在的错误 我可以在PROCMON看到这一切,但我不知道为什么。
IE为什么要删除临时文件,有没有办法阻止它这样做?终于找到了答案。如果您的CAB中有一个用于启动应用程序的钩子,则在退出应用程序之前,应用程序不得返回给调用方。默认情况下,控制台应用程序会执行此操作——GUI应用程序不会 我们的安装程序是CAB中的一个普通setup.exe GUI,因此它在开始运行后立即返回IE。IE然后开始清理CAB的临时文件
我们制作了一个控制台应用程序,它接受一个系统调用的命令行参数,然后在系统调用启动的进程退出之前不会退出。这会阻止IE清理,直到setup.exe完全完成。可能是外部程序,例如病毒检查器介入?(旁白:ActiveX???arrghh!在浏览器中???!!arrrgh!!!Hate!Hate!Hate!)在PROCMON中,我们可以看到执行删除操作的是IEXPLORE.EXE。我们可以在许多不同的机器上复制,即使是只有操作系统而没有其他功能的干净机器。Windows和IE的多个版本。我想我们在某种程度上要求这样做,但不确定如何做到。