2010-12-02 130 views
1

我有一个作为CAB交付的ActiveX控件。我有一个HTML页面,它只是一个带有cab名称和clsid的OBJECT标签(因此页面上没有任何其他内容)。为什么IE在安装时删除ActiveX安装程序?

这会导致IE询问是否允许安装ActiveX控件。它下载CAB,提取安装程序并开始运行它。

当MSIEXEC运行并试图安装控件时,IE决定删除.MSI文件所在的临时目录中的文件。有时候,文件被进程锁定,并且删除失败,然后安装成功,但大部分时间删除成功,然后MSIEXEC记录MSI文件不存在的错误。

我可以在PROCMON中看到所有这些,但我不知道为什么。它可以在Windows和IE的多个版本中重现。这不仅仅是删除MSI - 它是删除临时目录中的文件。

我唯一的线索是文件的修改日期是它在生成机器上创建的日期。这不是我可以继续更新的东西(它位于Web服务器上的CAB内部) - 我不能每隔五分钟就建立一个CAB以保持修改的日期新鲜 - 所以,我不认为这是它,但想把它作为一个线索。

为什么IE删除临时文件中的文件,并有什么办法阻止它做到这一点?

+0

它可能是一个外部程序,例如病毒检查程序正在进入吗? (作为一个侧面:ActiveX ??? Arrghhh!在浏览器???? !!!! Arrrrgh !!!恨!恨!恨!) – Spudley 2010-12-14 16:08:34

回答

0

终于明白了这一点。如果您的CAB中有启动应用程序的钩子,则在它们退出之前,它们不能返回给调用者。控制台应用程序默认执行此操作 - GUI应用程序不会。

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

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

相关问题