1

CABとして提供されるActiveXコントロールがあります。cab名とclsidを持つ単なるOBJECTタグであるHTMLページがあります(したがって、ページにはまだ何もありません)。

これにより、IEはActiveXコントロールのインストールについて質問します。これは私が許可していることです。CABをダウンロードし、インストーラーを抽出して実行を開始します。

MSIEXECの実行中にコントロールをインストールしようとしているときに、IEは.MSIファイルがあるtempディレクトリ内のファイルを削除することを決定します。場合によっては、ファイルがプロセスによってロックされ、削除が失敗してからインストールが成功しますが、ほとんどの場合、削除が成功すると、MSIEXECはMSIファイルが存在しないというエラーをログに記録します。

PROCMONでこれらすべてが起こっているのを見ることができますが、理由はわかりません。WindowsとIEの複数のバージョンで再現可能です。MSIを削除するだけでなく、tempディレクトリ内のファイルを削除します。

私が持っている唯一の手がかりは、ファイルの変更日がビルドマシンで作成された日付であるということです。これは私が更新し続けることができるものではありません(Webサーバー上のCABの内部にあります)-変更された日付を最新に保つために5分ごとにこのCABを構築することはできません-したがって、それはないと思いますそれが、手がかりとしてそれを言及したかった。

IEが一時的にファイルを削除するのはなぜですか?それを停止する方法はありますか?

4

1 に答える 1

0

ついにこれを理解した。CABにアプリを起動するためのフックがある場合、アプリが終了するまで発信者に戻らないようにする必要があります。コンソールアプリはデフォルトでこれを行います-GUIアプリは行いません。

インストーラーはCAB内の通常のsetup.exeGUIであるため、実行を開始するとすぐにIEに戻ります。次に、IEはCABの一時ファイルのクリーンアップを開始します。

システムコールを実行するためのコマンドライン引数を取り、システムコールによって開始されたプロセスが終了するまで終了しないコンソールアプリを作成しました。これにより、setup.exeが完全に完了するまでIEのクリーンアップが停止します。

于 2011-03-02T02:17:39.377 に答える