2010-12-02 28 views
1

J'ai un contrôle ActiveX qui est livré en tant que CAB. J'ai une page HTML qui est juste une balise OBJECT avec le nom de la cabine et clsid (donc rien d'autre sur la page pour le moment).Pourquoi IE supprime-t-il un programme d'installation ActiveX pendant son installation?

Cela demande à IE d'installer le contrôle ActiveX, ce que j'autorise. Il télécharge le CAB, extrait le programme d'installation et commence à l'exécuter.

Lorsque MSIEXEC est en cours d'exécution et essaie d'installer le contrôle, IE décide de supprimer les fichiers dans le répertoire temporaire où se trouve le fichier .MSI. Parfois, le fichier est verrouillé par le processus et la suppression échoue, puis l'installation réussit, mais la plupart du temps, la suppression réussit, puis MSIEXEC enregistre une erreur indiquant que le fichier MSI n'est pas présent.

Je peux voir tout cela se produire dans PROCMON, mais je ne sais pas pourquoi. Il est reproductible dans plusieurs versions de Windows et IE. Il ne s'agit pas simplement de supprimer le fichier MSI: il supprime les fichiers du répertoire temporaire. Le seul indice que j'ai est que la date de modification du fichier est la date à laquelle il a été créé sur la machine de construction. Ce n'est pas quelque chose que je peux garder à jour (c'est à l'intérieur d'un CAB sur un serveur web) - Je ne peux pas construire ce CAB toutes les cinq minutes pour garder les dates modifiées - donc, je ne pense pas que ce soit il, mais je voulais le mentionner comme un indice.

Pourquoi IE supprime-t-il les fichiers dans la temp et est-il possible de l'empêcher de le faire?

+0

Pourrait-il s'agir d'un programme externe, tel qu'un vérificateur de virus? (en aparté: ActiveX ??? Arrghhh! Dans un navigateur ???? Arrrrgh !!! Hate! Hate! Hate!) – Spudley

+0

Dans PROCMON, nous pouvons voir que c'est IEXPLORE.EXE qui fait la suppression. Nous pouvons reproduire sur beaucoup de machines différentes - même celles propres avec seulement l'OS et pas grand-chose d'autre dessus. Plusieurs versions de Windows et IE. Je pense que nous demandons cela d'une manière ou d'une autre, mais je ne sais pas comment. –

Répondre

0

Enfin compris cela. Si vous avez un crochet dans votre CAB pour démarrer des applications, ils ne doivent pas revenir à l'appelant jusqu'à leur sortie. Les applications de console le font par défaut - les applications graphiques ne le font pas.

Notre programme d'installation est une interface graphique setup.exe normale à l'intérieur de la CAB - elle retourne donc immédiatement à IE juste après son démarrage. IE commence alors à nettoyer les fichiers temporaires de la CAB.

Nous avons créé une application de console qui prend un argument de ligne de commande pour un appel système et ne le quitte pas tant que le processus démarré par l'appel système n'est pas terminé. Cela empêche IE de nettoyer jusqu'à ce que le fichier setup.exe soit complètement terminé.