Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Internet explorer 为什么IE在删除ActiveX安装程序时';正在安装什么?_Internet Explorer_Activex_Windows Installer_Cab - Fatal编程技术网

Internet explorer 为什么IE在删除ActiveX安装程序时';正在安装什么?

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看到这一切,但我不知道为什么。

我有一个ActiveX控件,作为CAB提供。我有一个HTML页面,它只是一个带有cab名称和clsid的对象标记(因此页面上还没有其他内容)

这导致IE询问有关安装ActiveX控件的问题,我允许这样做。它下载CAB,提取安装程序并开始运行它

当MSIEXEC运行并尝试安装控件时,IE决定删除.MSI文件所在临时目录中的文件。有时,文件被进程锁定,删除失败,然后安装成功,但大多数情况下,删除成功,然后MSIEXEC会记录MSI文件不存在的错误

我可以在PROCMON看到这一切,但我不知道为什么。它在Windows和IE的多个版本中都是可复制的。它不仅仅是删除MSI,而是删除临时目录中的文件

我得到的唯一线索是文件的修改日期是它在构建机器上创建的日期。这不是我可以不断更新的东西(它在Web服务器上的CAB中)——我不能每五分钟构建一次CAB来保持修改后的日期新鲜——所以,我不认为是这样,但我想把它作为一个线索提一下


IE为什么要删除临时文件,有没有办法阻止它这样做?

终于找到了答案。如果您的CAB中有一个用于启动应用程序的钩子,则在退出应用程序之前,应用程序不得返回给调用方。默认情况下,控制台应用程序会执行此操作——GUI应用程序不会

我们的安装程序是CAB中的一个普通setup.exe GUI,因此它在开始运行后立即返回IE。IE然后开始清理CAB的临时文件


我们制作了一个控制台应用程序,它接受一个系统调用的命令行参数,然后在系统调用启动的进程退出之前不会退出。这会阻止IE清理,直到setup.exe完全完成。

可能是外部程序,例如病毒检查器介入?(旁白:ActiveX???arrghh!在浏览器中???!!arrrgh!!!Hate!Hate!Hate!)在PROCMON中,我们可以看到执行删除操作的是IEXPLORE.EXE。我们可以在许多不同的机器上复制,即使是只有操作系统而没有其他功能的干净机器。Windows和IE的多个版本。我想我们在某种程度上要求这样做,但不确定如何做到。