Почему IE удаляет установщик ActiveX во время установки? - PullRequest
1 голос
/ 02 декабря 2010

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

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

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

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

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

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

1 Ответ

0 голосов
/ 02 марта 2011

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

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

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

...