Table de Matieres
I. Présentation
Le sujet peut paraître quelque peu poussiéreux, mais lors de mes interventions en clientèle, principalement au sein des petites structures, je suis régulièrement surpris par les techniques de mise à jour du navigateur Internet Explorer 11 sur les postes Windows 7 en particulier. En effet, selon les distributions officielles de Microsoft, Windows 7 intègre la version 8 ou 9 du navigateur, mais pour les versions suivantes, 10 ou 11, il faut procéder à une installation de packages. L’emploi du pluriel est volontaire puisque certains correctifs (KB) constituent des prérequis d’installation, mais je vais y revenir dans cet article. Pour mettre à jour Internet Explorer, il y a plusieurs méthodes telles que :
- En ligne, via Windows Update ou WSUS …
- Via un script chargé d’exécuter les différents packages …
- Via le kit IEAK (Déconseillé pour un déploiement)
- Injection au sein de vos images de référence (construites via MDT bien sûr 🙂 )
L’inconvénient majeur de ces techniques, porte sur la nécessité d’un ou plusieurs redémarrages selon la technique employée. Je vous propose donc une solution moins évidente, mais bien plus pratique et efficace en matière de déploiement de masse généralisé.
II. Analyse des packages d’installation d’IE11
A. Les prérequis
Pour rappel, les mises à jour requises pour l’installation d’Internet Explorer 11 sur Windows 7 sp1 x86 ou x64 sont KB2729094, KB2731771, KB2533623, KB2670838, KB2786081 et KB2834140 auxquelles il est possible d’ajouter les mises à jour facultatives suivantes : KB2639308, KB2888049 et KB2882822. (cf http://support.microsoft.com/kb/2847882 ) – Ce qui fait théoriquement 9 mises à jour, mais l’article ne tient pas compte de celles qui ont été remplacées :
- KB2726535 = Annule et remplace les mises à jour KB2533623 et KB2731771
- KB2882822 = Annule et remplace la mise à jour KB2639308.
En fin de compte, il nous reste 7 mises à jour (par architecture x86/x64) à installer avant de procéder à l’installation d’Internet Explorer 11 sur Windows 7 sp1.
1. Installer des packages .MSU (méthode traditionnelle)
Ces mises à jour sont délivrées au format .MSU et peuvent donc être installées via la commande suivante
wusa.exe UpdatePackage.MSU /quiet /norestart /log:Journal.log
Nous n’en aurons pas besoin dans cet exemple, mais pour votre gouverne, la commande suivante permet de désinstaller une mise à jour.
wusa.exe /kb:HotfixId /uninstall /quiet /norestart /log:Journal.log
Vous pouvez déposer tous les fichiers dans des sous-dossiers et inclure leur installation conditionnelle dans un script d’installation d’IE11.
Pour votre gouverne, voici un petit exemple de code Powershell permettant de tester les prérequis, mais ce n’est pas la technique retenue dans cet article.
$NeededHotFixes = @('KB2670838','KB2726535','KB2729094','KB2786081','KB2834140') Write-Host "Vérification de la présence des correctifs requis pour IE11." $InstalledHotFixes = (Get-HotFix).HotFixId $NeededHotFixes | foreach if ($InstalledHotFixes -match $_) Write-Host -fore Green "Correctif $_ installé"; else Write-Host -fore Red "Correctif $_ manquant"; # Ici, on peut procéder à l'installation via WUSA, mais il faudra déclarer une correspondance # entre les numéros de KB et le nom des packages .MSU
B. Le package principal d’installation IE11
Il vous faudra également récupérer le package d’installation autonome, en français disponible ici : http://windows.microsoft.com/en-us/internet-explorer/ie-11-worldwide-languages et en fonction de votre plateforme :
La commande d’installation silencieuse est :
IE11-Windows6.1-x86-fr-fr.exe /norestart /quiet /update-no IE11-Windows6.1-x64-fr-fr.exe /norestart /quiet /update-no
En l’absence des prérequis, l’exécution d’un de ces packages renvoie l’erreur « 40007 – USER_ERROR_MISSING_REQUIRED_PREREQUISITE »
C. Contenu d’un dossier de packaging IE11 autonome
En résumé, voici le contenu exhaustif d’un dossier « Sources » du package IE11 pour Windows 7 nécessaire à une installation autonome.
\Packages\IE11-Win7-sp1\Sources\IE11-Windows6.1-x64-fr-fr.exe \Packages\IE11-Win7-sp1\Sources\IE11-Windows6.1-x86-fr-fr.exe \Packages\IE11-Win7-sp1\Sources\Optional\Windows6.1-KB2882822-x64.msu \Packages\IE11-Win7-sp1\Sources\Optional\Windows6.1-KB2882822-x86.msu \Packages\IE11-Win7-sp1\Sources\Optional\Windows6.1-KB2888049-x64.msu \Packages\IE11-Win7-sp1\Sources\Optional\Windows6.1-KB2888049-x86.msu \Packages\IE11-Win7-sp1\Sources\Optional\Old\Windows6.1-KB2639308-x64.msu \Packages\IE11-Win7-sp1\Sources\Optional\Old\Windows6.1-KB2639308-x86.msu \Packages\IE11-Win7-sp1\Sources\Prereq\Windows6.1-KB2670838-x64.msu \Packages\IE11-Win7-sp1\Sources\Prereq\Windows6.1-KB2670838-x86.msu \Packages\IE11-Win7-sp1\Sources\Prereq\Windows6.1-KB2726535-x64.msu \Packages\IE11-Win7-sp1\Sources\Prereq\Windows6.1-KB2726535-x86.msu \Packages\IE11-Win7-sp1\Sources\Prereq\Windows6.1-KB2729094-v2-x64.msu \Packages\IE11-Win7-sp1\Sources\Prereq\Windows6.1-KB2729094-v2-x86.msu \Packages\IE11-Win7-sp1\Sources\Prereq\Windows6.1-KB2786081-x64.msu \Packages\IE11-Win7-sp1\Sources\Prereq\Windows6.1-KB2786081-x86.msu \Packages\IE11-Win7-sp1\Sources\Prereq\Windows6.1-KB2834140-v2-x64.msu \Packages\IE11-Win7-sp1\Sources\Prereq\Windows6.1-KB2834140-v2-x86.msu \Packages\IE11-Win7-sp1\Sources\Prereq\Old\Windows6.1-KB2533623-x64.msu \Packages\IE11-Win7-sp1\Sources\Prereq\Old\Windows6.1-KB2533623-x86.msu \Packages\IE11-Win7-sp1\Sources\Prereq\Old\Windows6.1-KB2731771-x64.msu \Packages\IE11-Win7-sp1\Sources\Prereq\Old\Windows6.1-KB2731771-x86.msu
Toutefois l’installation des correctifs et/ou de ces packages sous ce format, engendre une erreur « normale » (Code retour « 3010 – REBOOT REQUIRED »)
III. « Repackaging IE11 » pour un déploiement plus efficace !…
A. Réorganisation des sources
Pour ma part, je préfère une autre technique, moins contraignante, qui consiste à extraire les différents packages afin d’en obtenir leurs déclinaisons au format .CAB. puis procéder ensuite à leur injection dans le système via l’outil « DISM »
Pour extraire les MSU, vous pouvez utiliser l’utilitaire 7-Zip ou la commande suivante:
expand -F:* KB.msu
Pour information, seuls les fichiers portant l’extension .CAB nous seront utiles.
Pour extraire le package d’installation d’IE11, il suffit d’ajouter le commutateur « /x » suivi d’un dossier de destination lors du lancement, comme suit :
.\IE11-Windows6.1-<archi>-fr-fr.exe /x:
Pour information, cette première extraction contient des fichiers .MSU (4 par architecture) que nous devons également extraire au format .CAB. Ne conservez que les fichiers .cab correspondants à « IE-Hyphenation-fr-FR » et « IE-Spelling-fr-FR » respectivement identifiés par KB2849697 et KB2849696.
En résumé, on génère la structure de dossiers et fichiers suivante :
│ ├───IE11x64_CAB │ IE-Win7.CAB │ ielangpack-fr-FR.CAB │ Windows6.3-KB2849696-x86.cab │ Windows6.3-KB2849697-x86.cab │ x86_noKB2849696-KB2849697-amd64.txt │ ├───IE11x86_CAB │ IE-Win7.CAB │ ielangpack-fr-FR.CAB │ Windows6.3-KB2849696-x86.cab │ Windows6.3-KB2849697-x86.cab │ ├───Optional │ Windows6.1-KB2882822-x64.cab │ Windows6.1-KB2882822-x86.cab │ Windows6.1-KB2888049-x64.cab │ Windows6.1-KB2888049-x86.cab │ ├───Prereq │ Windows6.1-KB2670838-x64.cab │ Windows6.1-KB2670838-x86.cab │ Windows6.1-KB2726535-x64.cab │ Windows6.1-KB2726535-x86.cab │ Windows6.1-KB2729094-v2-x64.cab │ Windows6.1-KB2729094-v2-x86.cab │ Windows6.1-KB2786081-x64.cab │ Windows6.1-KB2786081-x86.cab │ Windows6.1-KB2834140-v2-x64.cab │ Windows6.1-KB2834140-v2-x86.cab │ └───Security IE11-Windows6.1-KB3038314-x64.cab IE11-Windows6.1-KB3038314-x86.cab KB3038314.txt
Note : Les fichiers .txt (ajoutés par mes soins) sont facultatifs et contiennent simplement des indications sur l’origine et l’objectif de certains correctifs.
B. Exemple de script d’installation ponctuel
Généralement, pour ce genre de besoin, je privilégie un script en Powershell, mais certains préféreront un autre langage et pour déroger à mes habitudes, je vous propose donc le batch suivant :
« Install_IE11_x86-x64.bat »
@ECHO OFF CLS ECHO ********************************************* ECHO Script d'installation d'Internet Explorer 11 ECHO ********************************************* set OSD= FOR /f "tokens=2 delims==" %%x in ('wmic os where "version='6.1.7601' and producttype=1" get caption /value') do (set OSD=%%x) ECHO %OSD% | findstr /C:"Windows 7">nul || (goto notW7) ECHO Le systeme actuel est "Windows 7 SP1" - On continue. WHOAMI /groups|findstr S-1-16-12288 > nul IF %errorlevel%==0 (echo Niveau de privileges : OK) ELSE (goto notAdmin) IF "%PROCESSOR_ARCHITECTURE%"=="x86" (set CPU=x86) ELSE (set CPU=x64) ECHO L'architecture CPU est : %CPU% ECHO Le chemin actuel est : %~dp0 ECHO Installation du prerequis IE11: KB2834140 dism /online /add-package /packagepath:%~dp0Prereq\Windows6.1-KB2834140-v2-%CPU%.cab /quiet /norestart ECHO Installation du prerequis IE11: KB2670838 dism /online /add-package /packagepath:%~dp0Prereq\Windows6.1-KB2670838-%CPU%.cab /quiet /norestart ECHO Installation du prerequis IE11: KB2726535 dism /online /add-package /packagepath:%~dp0Prereq\Windows6.1-KB2726535-%CPU%.cab /quiet /norestart ECHO Installation du prerequis IE11: KB2729094 dism /online /add-package /packagepath:%~dp0Prereq\Windows6.1-KB2729094-v2-%CPU%.cab /quiet /norestart ECHO Installation du prerequis IE11: KB2786081 dism /online /add-package /packagepath:%~dp0Prereq\Windows6.1-KB2786081-%CPU%.cab /quiet /norestart ECHO ----------------------------------------- ECHO Installation de la mise a jour facultative IE11: KB2888049 dism /online /add-package /packagepath:%~dp0Optional\Windows6.1-KB2888049-%CPU%.cab /quiet /norestart ECHO Installation de la mise a jour facultative IE11: KB2882822 dism /online /add-package /packagepath:%~dp0Optional\Windows6.1-KB2882822-%CPU%.cab /quiet /norestart ECHO ----------------------------------------- ECHO Installation du noyau principal IE 11 dism /online /add-package /packagepath:%~dp0IE11%CPU%_CAB\IE-Win7.cab /quiet /norestart ECHO Installation du correcteur orthographique (spelling) dism /online /add-package /packagepath:%~dp0IE11%CPU%_CAB\Windows6.3-KB2849696-x86.cab /quiet /norestart ECHO Installation de la coupure syllabique (Hyphenation) dism /online /add-package /packagepath:%~dp0IE11%CPU%_CAB\Windows6.3-KB2849697-x86.cab /quiet /norestart ECHO ----------------------------------------- ECHO Installation du pack de langue France dism /online /add-package /packagepath:%~dp0IE11%CPU%_CAB\ielangpack-fr-FR.cab /quiet /norestart ECHO ----------------------------------------- ECHO Installation de la mise a jour de securite cumulative pour IE11 KB3038314 (14/042015) dism /online /add-package /packagepath:%~dp0Security\IE11-Windows6.1-KB3038314-%CPU%.cab /quiet /norestart ECHO ***************************************** ECHO %errorlevel% ECHO Fin d'installation d'Internet Explorer 11. Le produit sera actif au prochain redemarrage de l'ordinateur. ECHO Fin du script GOTO Fin :notAdmin ECHO Niveau de privileges insuffisant pour l'installation - Fin du script GOTO Fin :notW7 ECHO Ce script est uniquement effectif sur Windows 7 SP1 GOTO Fin :Fin
Déposez ce script à la racine de la structure de dossier présentée précédemment, puis exécutez-le sur les postes cibles (via un compte d’administrateur), en redirigeant la sortie vers un journal (ie « Install_IE11_x86-x64.bat > c:\temp\IE11-inst.log »). A l’issue de ces opérations, Internet Explorer 11 devrait être correctement installé, mais ne sera activé qu’au prochain redémarrage de l’ordinateur.
C. Généralisation au sein des images .WIM
Maintenant que nous avons présenté cette technique d’installation « unitaire », je vous propose d’évoquer la généralisation au sein de vos images de référence via le MDT.
Note : Pour ceux qui n’utiliseraient pas le MDT, sachez qu’il est également possible d’injecter IE11 dans une image de distribution Windows 7, via une technique très similaire. Pour cela, il suffit de procéder préalablement à un montage de l’image .WIM, encore via la commande « DISM« , puis d’exécuter ce même batch (sous réserve de remplacer le commutateur « /online » en « /image:CheminDeMontage » afin de pointer vers l’image à modifier)
1. Intégration d’IE11 via le MDT
En raison du « repackaging » proposé précédemment, nous disposons déjà de la matière première pour effectuer cette opération.
Pour cela, au niveau de la console MDT « Deployment Workbench« , après vous être connecté au partage de déploiement désiré, rendez-vous sous la rubrique « Packages« , puis créer un nouveau dossier, comme par exemple « W7-Patches« . Utilisez ensuite le menu contextuel « Import OS Packages »
Sélectionnez le dossier dans lequel nous avons précédemment extrait les fichiers .CAB puis cliquez sur « Next »
Note : Il y aura quelques erreurs sur des packages tels que IE_SUPPORT… qui ne sont pas considérés comme des mises à jour. De plus, je vous conseille de créer des sous-dossiers par architecture afin de faciliter la réalisation de profils de sélection adaptés.
Une fois l’importation terminée, vous devriez obtenir quelque chose du genre :
Dans une séquence de tache standard, MDT installe automatiquement toutes les mises à jour contenues dans le dossier « Packages« . Cf « Preinstall … Apply Patches »
Facultatif : A des fins d’optimisation, je vous conseille de définir un nouveau profil « Selection Profile » afin de référencer un sous-dossier contenant uniquement les mises à jour en fonction du système d’exploitation installé.
Pour cela, dans la console MDT, sélectionnez le nœud « Advanced configuration … Selection Profiles » puis le menu « Action … New Selection Profile » ou le menu contextuel. Entrez un nom désignant ce profil selon l’organisation choisie, puis sélectionnez le(s) sous -dossier(s) correspondants.
Cliquez 2 fois sur « Next » puis « Finish » pour créer le profil de sélection.
Une fois le(s) profil(s) de sélection créé(s), vous n’aurez plus qu’à l’associer dans la séquence de tache, en lieu et place de la valeur « All Packages » mentionnée précédemment.
Si vous utilisez MDT2013, c’est terminé. En revanche, si vous utilisez une version antérieure telle que MDT2012up1, et que vous avez intégré IE11 dans vos images de référence, vous devrez procéder à une modification (ou vérification) du fichier de réponse « unattend.xml », de la séquence de tache. Dans le cas contraire, l’erreur « Windows could not parse or process unattend answer file for pass (specialize). A component or setting specified in the answer file does not exist. » peut apparaitre lors du déploiement.
Pour éviter cela, au niveau de la console MDT « Deployment Workbench« , sélectionnez la (ou les) séquence de tache d’installation « Windows 7 » puis cliquez sur le menu contextuel « Propriétés« . Sélectionnez l’onglet « OS Info » puis cliquez sur le bouton « Edit Unattend.xml« .
Si le fichier catalogue n’est pas à jour, celui-ci est régénéré par le MDT et l’opération peut être relativement longue. Ensuite, l’assistant de gestion d’image Windows (WSIM) s’ouvre sur l’image en question avec le fichier de réponse correspondant.
En fonction de l’architecture, sélectionnez le composant « x86… » ou « amd64_Microsoft-Windows-IE-InternetExplorer_neutral » situé sous le nœud « 4 specialize node« , puis dans la zone de propriétés, effectuez un clic droit sur « IEWelcomeMsg » puis « Annuler la modification« .
Supprimer également la directive « ShowMenuBar » = « true » si elle existe.
Remarque : La rubrique « Packages » du fichier de réponse n’est pas utile dans le cadre su MDT, à moins que ces mises à jour soient situées dans un autre dossier (déconseillé)
Enregistrez le fichier de réponse modifié puis quittez WSIM.
Cette procédure est un peu complexe, et en tant qu’expert 😉 , il est également possible de modifier directement le fichier « Unattend.xml » en commentant la balise. Autrement dit, ouvrez le fichier avec un bloc-notes puis remplacer la ligne « false » par « « .
A titre d’information, sur MDT 2013, le modèle de fichier de réponse contient ceci :
L’action est à réitérer pour chacune de vos séquences de tache concernées et par architecture. Une fois encore, cette opération est inutile si vous utilisez déjà MDT2013
Pour aller plus loin, dans la personnalisation d’IE11, téléchargez le kit IEAK11, disponible ici : https://www.microsoft.com/en-us/download/details.aspx?id=40903
Précision : L’usage d’IEAK engendre un nouveau package MSI ou EXE à partir des sources initiales, mais reste plus adapté à des personnalisations d’Internet Explorer qu’à des déploiements.
Bon déploiement à tous