- Installation silencieuse de Windows 7 – Première partie
- Installation silencieuse de Windows 7 – Deuxième partie
- Installation silencieuse de Windows 7 – Troisième partie
- Installation silencieuse de Windows 7 – Quatrième partie : les mises à jour.
- Installation silencieuse de Windows 7 – Cinquième partie : les programmes.
Quelques aménagements de bon aloi
Nous voici désormais face à une machine dotée d’un Windows 7 SP1 opérationnel et dont les dossiers essentiels liés au seul utilisateur actif sont localisés sur le disque D.
En reprenant la même structure que dans la première étape, il est aisé d’apporter une série de modifications que l’on juge à même de faciliter la vie de ce très cher utilisateur tout nouvellement créé.
En ce qui me concerne, cette série comporte à ce jour 7 éléments :
- Internet Explorer 9 qui se contente aimablement des commutateurs /quiet /norestart pour s’installer en mode silencieux. On télécharge les versions 32 et 64 bits et on se débrouille pour que le script lance celle qui convient au système.
Set WshShell = CreateObject("Wscript.Shell") Set objFSO = CreateObject("Scripting.FileSystemObject") 'Récupération du chemin du dossier contenant le script en cours strCheminDossierScript = objFSO.GetParentFolderName(Wscript.ScriptFullName) 'Installation silencieuse de Internet Explorer 9 Set WshSysEnv = WshShell.Environment("SYSTEM") If WshSysEnv("PROCESSOR_ARCHITECTURE") = "AMD64" Then '64 bits strCheminFichierInstall = strCheminDossierScript & "\IE9-64.exe" Else '32 bits strCheminFichierInstall = strCheminDossierScript & "\IE9-32.exe" End If WshShell.Run Chr(34) & strCheminFichierInstall & Chr(34) & " /quiet /norestart", 0, True - Microsoft .NET Framework 4 Client Profile qui s’installe silencieusement avec les paramètres /q /norestart.
Set WshShell = CreateObject("Wscript.Shell") Set objFSO = CreateObject("Scripting.FileSystemObject") 'Récupération du chemin du dossier contenant le script en cours strCheminDossierScript = objFSO.GetParentFolderName(Wscript.ScriptFullName) 'Installation silencieuse de Microsoft .NET Framework 4 Client Profile strCheminFichierInstall = strCheminDossierScript & "\Microsoft .NET Framework 4 Client Profile.exe" WshShell.Run Chr(34) & strCheminFichierInstall & Chr(34) & " /q /norestart", 0, True - Un ensemble de tweaks portant sur la branche HKEY_CURRENT_USER de la base de registre. Dans le lot, j’ai glissé un fichier RemoveLibraries.reg qui débarrasse la machine de ses librairies.
- L’attribution du nom Programmes au disque C; l’attribution du nom Données et d’une icône spécifique au disque D.
'Attribution des noms "Programmes" et "Données" aux disques C et D set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") Set colDrives = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where DeviceID = 'C:'") For Each objDrive in colDrives objDrive.VolumeName = "Programmes" objDrive.Put_ Next Set colDrives = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where DeviceID = 'D:'") For Each objDrive in colDrives objDrive.VolumeName = "Données" objDrive.Put_ Next 'Icône du disque "Données" const HKLM = &H80000002 set oWMIReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\D\DefaultIcon" oWMIReg.CreateKey HKLM,strKeyPath strValueName = "" strValue = "c:\\windows\\system32/imageres.dll,60" oWMIReg.SetStringValue HKLM,strKeyPath,strValueName,strValue - La suppression des favoris par défaut d’Internet Explorer que Microsoft ne peut s’empêcher de tenter de nous fourguer.
'Suppression de tous les dossiers et sous dossiers du répertoire des Favoris Const FAVORITES = &H6& Set objFSO = CreateObject("Scripting.FileSystemObject") Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.Namespace(FAVORITES) For Each sousDossier in objFolder.Items Suppression objFSO.GetFolder(sousDossier.path) Next Sub Suppression(dossier) strChemin = dossier.path For Each sousDossier in dossier.SubFolders Suppression sousDossier Next objFSO.DeleteFolder(strChemin), true End Sub - La création sur le Bureau de l’utilisateur de raccourcis vers les dossiers Mes documents, Mes images, Ma musique et Mes vidéos de ce même utilisateur.
Set objShell = CreateObject("Shell.Application") Set WshShell = CreateObject("Wscript.Shell") '------------------------------------------------------------------------------------------- 'Récupération du chemin du Bureau de l'utilisateur '------------------------------------------------------------------------------------------- Const DESKTOP = &H10& Set objFolder = objShell.Namespace(DESKTOP) strCheminBureau = objFolder.Self.Path '------------------------------------------------------------------------------------------- 'Récupération du chemin des Documents de l'utilisateur '------------------------------------------------------------------------------------------- Const MY_DOCUMENTS = &H5& Set objFolder = objShell.Namespace(MY_DOCUMENTS) strCheminDocuments = objFolder.Self.Path '------------------------------------------------------------------------------------------- 'Création d'un raccourci "Mes documents" sur le bureau de l'utilisateur '------------------------------------------------------------------------------------------- Set objLien = WshShell.CreateShortcut(strCheminBureau & "\Mes documents.lnk") objLien.TargetPath = strCheminDocuments objLien.Save '------------------------------------------------------------------------------------------- 'Récupération du chemin de "Ma musique" de l'utilisateur '------------------------------------------------------------------------------------------- Const MY_MUSIC = &Hd& Set objFolder = objShell.Namespace(MY_MUSIC) strCheminMusique = objFolder.Self.Path '------------------------------------------------------------------------------------------- 'Création d'un raccourci "Ma musique" sur le bureau de l'utilisateur '------------------------------------------------------------------------------------------- Set objLien = WshShell.CreateShortcut(strCheminBureau & "\Ma musique.lnk") objLien.TargetPath = strCheminMusique objLien.Save '------------------------------------------------------------------------------------------- 'Récupération du chemin de "Mes images" de l'utilisateur '------------------------------------------------------------------------------------------- Const MY_PICTURES = &H27& Set objFolder = objShell.Namespace(MY_PICTURES) strCheminImages = objFolder.Self.Path '------------------------------------------------------------------------------------------- 'Création d'un raccourci "Mes images" sur le bureau de l'utilisateur '------------------------------------------------------------------------------------------- Set objLien = WshShell.CreateShortcut(strCheminBureau & "\Mes images.lnk") objLien.TargetPath = strCheminImages objLien.Save '------------------------------------------------------------------------------------------- 'Récupération du chemin de "Mes vidéos" de l'utilisateur '------------------------------------------------------------------------------------------- Const MY_VIDEOS = &He& Set objFolder = objShell.Namespace(MY_VIDEOS) strCheminVideos = objFolder.Self.Path '------------------------------------------------------------------------------------------- 'Création d'un raccourci "Mes vidéos" sur le bureau de l'utilisateur '------------------------------------------------------------------------------------------- Set objLien = WshShell.CreateShortcut(strCheminBureau & "\Mes vidéos.lnk") objLien.TargetPath = strCheminVideos objLien.Save - La réduction de la taille des icônes du bureau et le masque automatique de la barre des tâches.
Pour ce qui est du dernier élément, il n’a pas été simple à mettre en place. En effet, Windows 7 lit dans la base de registre les informations relatives à la taille des icônes du bureau et au mode de cache de la barre des tâches dans la phase de connexion de l’utilisateur. Lorsque l’utilisateur se déconnecte, les entrées de la base de registre sont écrasées par les données actuelles, telles qu’elles ont éventuellement été redéfinies par l’utilisateur. Il ne sert donc à rien de tenter de modifier directement les entrées de la base de registre tant qu’un utilisateur est connecté. La solution consiste alors à effectuer ces modifications après le démarrage de Windows mais avant la construction du bureau de l’utilisateur. C’est précisément ce que permet la clé HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce . Cerise sur le gâteau, quand le contenu de la clé a été exécuté, celle-ci est réinitialisée.
Ainsi donc, notre fichier Install.vbs va dans un premier temps créer un fichier BarreDesTaches.vbs, planqué quelque part dans le dossier temporaire de Windows. C’est ce fichier qui va se charger à terme d’opérer les modifications idoines dans la base de registre. Et forcément, Install.vbs va rajouter BarreDestaches.vbs en RunOnce.
Ce qui nous donne en code le petit pavé qui suit :
Option Explicit
'-------------------------------------------------------------------------------------------
'Récupération de l'emplacement de Windows
'-------------------------------------------------------------------------------------------
Dim oShell
Set oShell = CreateObject("Wscript.Shell")
Dim strWinDir
strWinDir = oShell.ExpandEnvironmentStrings("%SystemRoot%")
'-------------------------------------------------------------------------------------------
'Ecriture du fichier BarreDesTaches.vbs dans le répertoire temporaire
'-------------------------------------------------------------------------------------------
Dim objFSO, objTextFile
Dim strDirectory, strFile, strText
strDirectory = strWinDir & "\TEMP"
strFile = "\BarreDesTaches.vbs"
strText = "const HKCU = &H80000001" _
& VbCrLf & _
"set oWMIReg = GetObject(""winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv"")"_
& VbCrLf & _
"dim iValueArray()"_
& VbCrLf & _
"oWMIReg.GetBinaryValue HKCU, ""Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2"", ""Settings"", iValueArray"_
& VbCrLf & _
"iValueArray(8) = 3"_
& VbCrLf & _
"oWMIReg.SetBinaryValue HKCU, ""Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2"", ""Settings"", iValueArray"_
& VbCrLf & _
"strKeyPath = ""Software\Microsoft\Windows\Shell\BagMRU"""_
& VbCrLf & _
"strValueName = ""NodeSlot"""_
& VbCrLf & _
"oWMIReg.GetDWORDValue HKCU, strKeyPath, strValueName, dwValue"_
& VbCrLf & _
"strKeyPath = ""Software\Microsoft\Windows\Shell\Bags\"" & dwValue & ""\Desktop"""_
& VbCrLf & _
"oWMIReg.SetDWORDValue HKCU, ""Software\Microsoft\Windows\Shell\Bags\1\Desktop"", ""IconSize"", 30"_
& VbCrLf & _
"oWMIReg.SetDWORDValue HKCU, strKeyPath, ""IconSize"", 30"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile(strDirectory & strFile, 2, True)
objTextFile.WriteLine(strText)
objTextFile.Close
'-------------------------------------------------------------------------------------------
'Lancement du fichier BarreDesTaches.vbs au prochain LogOn via RunOnce
'-------------------------------------------------------------------------------------------
const HKey_LOCAL_MACHINE = &H80000002
dim oWMIReg
set oWMIReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
oWMIReg.SetStringValue HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\RunOnce", "BarreDesTaches", strWinDir&"\Temp\BarreDesTaches.vbs"
Téléchargement
Je vous laisse étudier la chose à partir des sources que vous pouvez télécharger ici. Notez qu’elles sont allégées des installateurs 32 et 64 bits d’Internet Explorer 9 et de celui de Microsoft .NET Framework 4 Client Profile.
Comme d’habitude, si vous avez des doutes ou des questions, si vous relevez des erreurs ou bien encore si vous avez plus et mieux à suggérer, n’hésitez pas à faire signe.
Bonjour,
Vraiment super pratique et très claire, félicitations.
chez moi pour IE9 j’ai une erreur à la ligne 08 Set WshSysEnv = objShell.Environment(« SYSTEM »)
voilà c’était juste pour vous le signaler.
bonne continuation
Cordialement
Merci d’avoir relevé l’erreur.
La ligne en question doit s’écrire :
Set WshSysEnv = WshShell.Environment(« SYSTEM »)
Elle a été corrigée.
Bonjour,
je n’ai plus d’erreur lors du lancement de l’hta mais IE9 ne s’installe pas, je l’ai laissé tourné deux heures mais rien.
quelqu’un a t-il eu le même problème ?
Merci
Avez vous pensé à renommer les installateurs IE9-Windows7-x86-fra.exe et IE9-Windows7-x64-fra.exe en respectivement IE9-32.exe et IE9-64.exe?
oui oui pas de problème, ça j’ai fait.
merci de prendre le temps de me répondre.
Je viens de refaire l’expérience : tout fonctionne sans aucun problème pour moi que ce soit en 32 ou 64 bits.
L’installation d’Internet Explorer s’opère en moins de trois minutes.
Bonsoir,
de mon coté j’ai aussi fait des essai et visiblement quand c’est un fichier en .exe une fenêtre s’ouvre et il faut cliquer sur « exécuter » mais je crois que pour IE elle est masqué par la fenêtre de l’HAT
Je m’en veux de ne pas avoir songé à cette étape effectivement essentielle.
Sous Windows 7, tout fichier exe téléchargé doit en effet être préalablement débloqué avant de pouvoir s’exécuter dans une procédure d’installation automatisée.
La manip’ est décrite dans la cinquième partie à propos d’Avast.
OK, merci pour l’info.
c’est dommage qu’il n’y est rien d’automatique car j’ai le même problème avec tout les .exe des mises à jour.
enfin c’est déjà bon à savoir.
bonne soirée
seriez-vous comment faire pour installer IE10 à la place d’IE09 ?
merci
Cordialement
Bonjour,
La technique est absolument identique.
Le téléchargement des versions françaises d’IE10 s’effectue ici.
Encore une fois, il est prudent de débloquer les exécutables téléchargés (Clic droit – Propriétés – Débloquer).
Pour plus de simplicité d’écriture, je les renomme en “IE10-32.exe” et “IE10-64.exe”.
Il suffit ensuite d’adapter les lignes 11 et 14 du script vbs et le tour est joué.
Cordialement,
Laurent.
Merci pour cette réponse très rapide, mais mon problème est que quand je fais un poste je le fais hors internet et l’installation d’IE 10 visiblement veut impérativement se connecter à internet, je n’ai trouvé aucun EXE qui me fait l’installation hors ligne.
Si vous avez une solution je suis vraiment preneur.
Merci encore
Cordialement
Freddy
j’ai peut-être trouvé : ieak internet explorer 10
je fais un teste
merci
Alors voilà, ça fonctionne avec ieak !!! mais il faut IMPÉRATIVEMENT installer ces mise à jour avant
KB2670838
KB2533623
KB2729094
KB2731771
KB2786081
pour le commutateur d’installation du fichier généré par ieak il faut seulement mettre : /Q
Testé sur Windows 7 SP1
Bonsoir,
je vous embête encore un peu mais après installation de IE10 les autres installations je n’ai plus le dégradé bleu dans le HTA, juste un carré blanc.
Ça ne gène en rien l’installation des autres parties mais voilà je voulais le signaler.
merci encore pour ce formidable travail.
bon week-end