Mise à jour du 20/03/2016 : La méthode décrite ci-dessous est toujours fonctionnelle mais présente des difficultés dues à son ancienneté (cf les commentaires), l'article Intégrer les mises à jour à un ISO Windows 7 (épisode 2) décrit une méthode plus récente et plus simple.
Dans les semaines qui viennent, je vais être amené à déployer Windows 7 64 bits sur l'ensemble du parc informatique de la société (enfin sauf sur mon poste, faut pas pousser hein…), mettant ainsi fin au règne de Windows XP. Pas de problème particulier en perspective si ce ne sont d'éventuelles incompatibilités entre les plugins développés en interne (32 bits) et les futurs 3DS Max (64 bits). Message personnel pour Patrick, mon lead-artist préféré : si tu pouvais enfin te libérer quelques jours pour tester ça en profondeur, je ferai un effort pour ne plus renverser (accidentellement bien sûr !) le monceau de figurines nippones qui jonchent ton poste de travail. Mais revenons au sujet du jour, Windows 7 qui est sorti il y a maintenant 2 ans est affublé d'un Service Pack ainsi que d'un nombre non négligeable de mises à jour, typiquement le genre raffinements qui font que la procédure de mises à jour prend plus de temps que l'installation de l'OS (même avec un serveur WSUS sous le coude). L'idéal serait donc d'avoir un ISO de Windows 7 contenant l'intégralité des mises à jour. Il y a une dizaine de jours, Olivier Olejniczak de l'excellent site Synergeek, publiait un article qui allait me faciliter la tâche, la lecture de cet article est recommandée pour en apprendre un peu plus sur les fichiers .wim (que nous allons ici modifier). Olivier, donc, termine son article par la mention d'un script Powershell permettant de télécharger toutes les mises à jour concernant son OS et de les intégrer dans le fameux fichier install.wim. Je vais donc détailler la mise en œuvre de ce processus ô combien distrayant.
Pré-requis :
- Windows 7 / 2008 R2 (64 bits dans le cas présent)
- Powershell 2.0 (la version 3.0 pose problème)
Procédure :
On va commencer par télécharger le Microsoft Deployment Toolkit qui nous fournira tous les outils nécessaires aux futures manipulations. Une fois installé, exécuter le Deployment Workbench, se rendre dans la partie Information Center > Components et télécharger Windows Automated Installation Kit (boire 5 cafés le temps de rapatrier les 1,7 Gio).
Si vous n'aimez pas le café (et je vous plains sincèrement), vous pouvez préparer l'environnement de travail pendant ce temps :
– Copier le contenu de l'ISO de Windows 7 dans un dossier (par exemple X:\ISO_update\Win7\), notez que l'utilisation d'un ISO contenant le SP1 est recommandé, l'ISO finale n'en sera que plus léger. Pour ceux qui n'ont pas accès facilement à ces ISO, ils sont disponibles ici (attention, je vous invite grandement à vérifier les checksum MD5 ou SHA1 de ces images pour éviter toutes mauvaises surprises, pour ma part le MD5 de l'ISO Français x64: X17-59197.iso est conforme à ce qu'il doit être – 9211b4c6f8ca317a09e32e701faf2be1)
– Télécharger dans le dossier X:\ISO_update\ le script magique qui va intégrer les mises à jour et protéger votre machine des BSoD, de la cirrhose et de la calvitie : https://imagepatcher.codeplex.com
– Lancer une session Powershell en mode administrateur et entrer la commande suivante afin d'autoriser les scripts non-signés (à utiliser en connaissance de cause !) :
Set-ExecutionPolicy RemoteSigned
– Si cela ne fonctionne pas, utiliser la commande suivante :
Set-ExecutionPolicy Unrestricted
– Une fois le Windows Automated Installation Kit installé, exécuter le script de mise à jour (la procédure peut durer plusieurs dizaines de minutes selon le nombre d'images à mettre à jour) :
cd X:\ISO_update
.\imagepatcher.ps1 -dbg:no -imagefile:X:\ISO_update\Win7\sources\install.wim -patchimages:"3"
Paramètres du script :
- dbg [yes/no] : mode verbeux
- imagefile [path] : chemin vers le fichier .wim
- patchimages [all/1,2,3,4…] : détermine quelle(s) image(s) mettre à jour dans le fichier .wim (éditer le fichier [1].xml contenu dans le fichier install.wim pour déterminer le numéro de chaque image, ici 1=Home Basic ; 2=Home Premium ; 3=Professional ; 4=Ultimate)
– La procédure terminée, il ne reste plus qu'à créer un ISO bootable (plus d'infos sur les paramètres de oscdimg) :
cd C:\Program Files\Windows AIK\Tools\amd64\
.\oscdimg.exe -u2 -m -h -oc -g -bX:\ISO_update\Win7\boot\etfsboot.com X:\ISO_update\Win7 X:\win7_updated.iso
– Interdire de nouveau les scripts non-signés :
Set-ExecutionPolicy Restricted
Bilan : l'image obtenue pèse quelques 3,3 Gio, je note cependant qu'une vingtaine de mises à jour supplémentaires sont quand même nécessaires après l'installation de OS, sans compter celles concernant .NET ou Silverlight. Toujours est-il que ce script permet d'avoir une image de Windows 7 à peu près à jour qui permettra d'économiser un temps précieux lors du déploiement des postes de travail.
Bonus : Pour ceux qui rechignent à utiliser la ligne de commande (ce que je peux comprendre, malgré tout), je suis tombé sur gDISM, un outil écrit en Java qui permet d'utiliser les possibilités de la commande dism de manière intuitive. Il ne permet pas l'intégration automatique des mises à jour mais par exemple, l'ajout de pilotes (pour ceux qui ont la chance d'avoir un parc informatique homogène…), l'activation de diverses fonctionnalités ainsi que tout un tas d'outils bien utiles à la bidouille des ISO Windows.
Sources :