Skip to content
 

Installation silencieuse de Windows 7 – Troisième partie

 
 
 
  
 
 
 

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.
 
 

Series NavigationInstallation silencieuse de Windows 7 – Deuxième partieInstallation silencieuse de Windows 7 – Quatrième partie : les mises à jour.Installation silencieuse de Windows 7 – Cinquième partie : les programmes.
Page vue 5 324 fois

15 commentaires

  1. tiotbrev dit :

    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

  2. Laurent dit :

    Merci d’avoir relevé l’erreur.
    La ligne en question doit s’écrire :
    Set WshSysEnv = WshShell.Environment(« SYSTEM »)
    Elle a été corrigée.

  3. tiotbrev dit :

    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

  4. Laurent dit :

    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?

  5. tiotbrev dit :

    oui oui pas de problème, ça j’ai fait.
    merci de prendre le temps de me répondre.

  6. Laurent dit :

    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.

  7. tiotbrev dit :

    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

  8. Laurent dit :

    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.

  9. tiotbrev dit :

    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

  10. tiotbrev dit :

    seriez-vous comment faire pour installer IE10 à la place d’IE09 ?
    merci
    Cordialement

  11. Laurent dit :

    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.

  12. tiotbrev dit :

    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

  13. tiotbrev dit :

    j’ai peut-être trouvé : ieak internet explorer 10
    je fais un teste
    merci

  14. tiotbrev dit :

    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

  15. tiotbrev dit :

    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

Laissez une réponse