2010-12-02 2 views
1

У меня есть элемент управления ActiveX, который поставляется как CAB. У меня есть HTML-страница, которая представляет собой только тег OBJECT с именем кабины и clsid (так что ничего больше на странице).Почему IE удаляет установщик ActiveX во время его установки?

Это заставляет IE задавать вопрос об установке элемента управления ActiveX, который я разрешаю. Он загружает CAB, извлекает установщик и начинает его запускать.

Пока MSIEXEC работает и пытается установить элемент управления, IE решает удалить файлы в каталоге temp, где находится файл .MSI. Иногда файл блокируется процессом и удаляется сбой, а затем установка выполняется успешно, но большую часть времени удаляет его, а затем MSIEXEC регистрирует ошибку, которая отсутствует в файле MSI.

Я вижу все это в PROCMON, но я понятия не имею, почему. Он воспроизводится в нескольких версиях Windows и IE. Это не просто удаление MSI - это удаление файлов в каталоге temp.

Единственный ключ, который у меня есть, заключается в том, что измененная дата файла - это дата, когда она была создана на машине сборки. Это не то, что я могу продолжать обновлять, хотя (он находится внутри CAB на веб-сервере). Я не могу просто создавать эту CAB каждые пять минут, чтобы сохранить измененные даты свежими, поэтому я не думаю, что это он, но хотел упомянуть об этом как подсказку.

Почему IE удаляет файлы во временном интервале и есть ли способ остановить его от этого?

+0

Возможно, это внешняя программа, такая как средство проверки на вирусы? (в стороне: ActiveX ??? Arrghhh! В браузере ???? !!!! Arrrhgh !!! Hate! Hate! Hate!) – Spudley 2010-12-14 16:08:34

ответ

0

Наконец-то понял это. Если у вас есть крючок в CAB для запуска приложений, они не должны возвращаться к вызывающему абоненту, пока не выйдут. Консольные приложения делают это по умолчанию - нет приложений GUI.

Наш установщик - обычный графический интерфейс setup.exe внутри CAB - поэтому он немедленно возвращается в IE сразу после его запуска. Затем IE начинает очищать временные файлы CAB.

Мы создали консольное приложение, которое принимает аргумент командной строки для выполнения системного вызова, а затем не выходит, пока процесс не запускается при выходе из системного вызова. Это предотвращает очистку IE до тех пор, пока файл setup.exe не будет полностью выполнен.

Смежные вопросы