Skip to content
 

Installation silencieuse de Windows 7 – Cinquième partie : les programmes.

 
 
 
  
 
 
 

Introduction

Bon, j’imagine bien que je ne vais rien vous apprendre mais l’installation silencieuse d’une application peut parfois relever du parcours du combattant. Au mieux, elle s’effectue en un tour de main avec l’adjonction de quelques paramètres, au pire, elle s’avère pratiquement impossible.

Coté interface et méthodologie, je suis bêtement reparti de la structure établie pour les première et deuxième étapes de la post-installation.
À quelques détails près concernant la gestion HTML de l’affichage, UI.hta demeure inchangé dans son fonctionnement : lancé par Installation.vbs, il parcourt les dossiers qu’il trouve à ses cotés pour y lire le fichier Description.txt afin d’en afficher le contenu. Puis, dossier après dossier, il lance le fichier Install.vbs qui, si tout fonctionne sans heurt, effectue l’installation silencieuse de l’application correspondante.

Illustration par l’exemple : Avast

Au hasard, comme ça, on va démarrer par un exemple simple : Avast.

Si vous cherchez un tant soit peu sur la toile, vous ne tarderez pas à découvrir quels sont les paramètres qui permettent de procéder à son installation silencieuse, ou presque (vi, y’a toujours une petite barre de progression qui s’affiche au moment de la décompression de la chose mais on va pas chipoter!)… En même temps, maintenant que vous êtes là, ce serait ballot de partir en courant à la chasse à l’information alors que vous vous doutez bien que je vais vous la donner dans quelques lignes l’information en question… M’enfin bon…

Or donc, on dirait comme ça que vous avez téléchargé l’installateur d’Avast et renommé la chose en Avast.exe. Vous avez en outre pris la précaution de débloquer le fichier téléchargé via un clic droit et un petit tour dans les propriétés (voir : ). Il vous suffit alors de taper la ligne de commande suivante pour lancer la chose en mode silencieux :

Avast.exe /SILENT

Ben voilà, maintenant qu’on sait tout ce qu’on avait à savoir, y’a plus qu’à passer à l’action : je crée un dossier Avast aux cotés des fichiers Installation.vbs et UI.hta. J’y glisse le fichier Avast.exe téléchargé précédemment. Dans ce même dossier Avast, je crée un nouveau fichier Description.txt dont le contenu vaut par exemple "Installation de Avast 6.0.1091.0." ainsi qu’un second fichier Install.vbs qui ressemble à ça :

Set objShell = 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 Avast
strCheminFichierInstall = strCheminDossierScript & "\Avast.exe"
objShell.Run Chr(34) & strCheminFichierInstall & Chr(34) & " /SILENT", 0, True

 
On teste la chose. Tout fonctionne correctement si ce n’est qu’en fin d’installation survient une fenêtre de bienvenue. Elle n’est pas bloquante et n’empêche en rien la poursuite de la procédure mais comme on est un tantinet psychorigide, on va chercher à s’en débarrasser. Pour ce faire, j’ai fait le choix de recourir à un petit script AutoIt construit par mes soins et bêtement nommé CloseWindowAvast.exe.
Comme on a décidé de tatillonner, on se dit qu’on supprimerait bien le raccourci créé sur le bureau dont on se fout comme de l’an 40 vu qu’on a déjà l’icone d’Avast collée à la zone de notification. Ce qui, au final nous donne un Install.vbs qui ressemble à ça :

Set objShell = 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 Avast
strCheminFichierInstall = strCheminDossierScript & "\Avast.exe"
objShell.Run Chr(34) & strCheminFichierInstall & Chr(34) & " /SILENT", 0, True

'Fermeture de la fenêtre d'Avast
strCheminFichierCloseWindow = strCheminDossierScript & "\CloseWindowAvast.exe"
If objFSO.FileExists(strCheminFichierCloseWindow) Then
	objShell.Run Chr(34) & strCheminFichierCloseWindow & Chr(34) , 0, True
End If

'Suppression du raccourci de Avast sur le bureau
strCheminRaccourciAvast = "C:\Users\Public\Desktop\avast! Free Antivirus.lnk"
If objFSO.FileExists(strCheminRaccourciAvast) Then
	objFSO.DeleteFile strCheminRaccourciAvast, True
End If

 
Et pis c’est tout!!! That’s all!!! L’affaire est dans le sac, c’est torché, plié, circulez, y’a rien à voir, plus qu’à laisser faire…

Juste un petit rappel pour ceusses qui l’ont oublié vu que ça fait quelques mois qu’ils n’ont pas mis le nez dans le vbscript et je les comprends : le 0 et le True de la fin de la dernière ligne intiment l’ordre au script de lancer Avast.exe dans une fenêtre cachée et d’attendre que ce même Avast.exe ait achevé sa tâche avant de continuer (en l’occurrence, avant de se refermer pour repasser la main à son petit copain Install.hta).

Illustration par l’exemple : AIMP2

Pour ceux qui l’ignoreraient encore (personne n’est parfait), AIMP2 est un lecteur audio d’excellente tenue qui nous vient du froid mais qui n’en est pas moins parfait pour autant. Vous le trouverez ici et un peu partout ailleurs.

Téléchargement, débloquage, renommage en Aimp.exe, glissage dans un dossier AIMP2 collé à Install.hta, rajoutage au sein de ce dossier d’un ch’ti fichier Description.txt dont le contenu vaudrait, j’vous le donne en mille, "Installation de AIMP 2.61.583.", partage en quête de paramètres silencieux, trouvage facile les doigts dans le nez et donc écriturage du fichier Install.vbs qui a des airs de déjà vu :

Set objShell = 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 AIMP
strCheminFichierInstall = strCheminDossierScript & "\Aimp.exe"
objShell.Run Chr(34) & strCheminFichierInstall & Chr(34) & " /S", 0, True

Testage et …
Incontestablement, ça fonctionne, sauf que : si vous lancez AIMP2, il commence par vous demander la langue que vous souhaitez employer. Une fois passé l’interrogatoire, vous découvrez avec effroi (petite âme sensible, va!) qu’il n’est associé à aucune extension.
Pas de panique! En creusant un peu, on découvre que la langue sélectionnée est enregistrée dans un fichier ini planqué dans le dossier Data, lui-même réfugié à l’intérieur du dossier dans lequel AIMP2 s’est fait son petit nid bien à lui (par défaut : C:\Program Files\AIMP2\Data). Si vous avez opté pour la langue française, le contenu du fichier Aimp.ini doir ressembler à ça :

[system]
UserMode=1
BlockAssociations=0
Version=2611
DefaultLang=french.lng

Par ailleurs, on s’aperçoit que dans le dossier où s’est installé AIMP2 figure également un dossier Langs qui, comme son nom le suggère fortement, renferme tous les fichiers langues disponibles. En bon français que nous sommes, à l’identité fortement réaffirmée par les esprits supérieurs qui nous gouvernent encore, on supprime tout à l’exception de notre fichier national à nous qu’on y tient, à savoir french.lng.

Tout emplis d’un fier sentiment du devoir accompli, renforcé par la conviction bien assise d’avoir gagné là quelques kilo octets et, subséquemment, la reconnaissance éternelle de notre disque dur, on copie les dossiers Data et Langs dans notre dossier AIMP2 à nous et on rajoute les lignes qui suivent à notre fichier Install.vbs :

'Récupération du chemin du dossier d'AIMP dans Program Files en fonction du système
Set WshSysEnv = objShell.Environment("SYSTEM")
If WshSysEnv("PROCESSOR_ARCHITECTURE") = "AMD64" Then
	'64 bits
	strCheminDossierAIMP2 = objShell.ExpandEnvironmentStrings("%ProgramFiles(x86)%") & "\AIMP2\"
Else
	'32 bits
	strCheminDossierAIMP2 = objShell.ExpandEnvironmentStrings("%ProgramFiles%") & "\AIMP2\"
End If

'Suppression des dossiers Data et Langs dans le dossier AIMP2 de ProgramFiles
set dossierData = objFSO.GetFolder(strCheminDossierAIMP2 & "Data")
dossierData.Delete
set dossierLangs = objFSO.GetFolder(strCheminDossierAIMP2 & "Langs")
dossierLangs.Delete

'Copie du dossier Data dans le dossier AIMP2 de ProgramFiles
objFSO.CopyFolder strCheminDossierScript & "\Data", strCheminDossierAIMP2, True

'Copie du dossier Langs dans le dossier AIMP2 de ProgramFiles
objFSO.CopyFolder strCheminDossierScript & "\Langs", strCheminDossierAIMP2, True

Et hop! Le problème de la langue est réglée…

Reste le gros morceau des associations…

On se doute bien, parce qu’on est pas né de la dernière pluie et qu’on ne nous la fait pas, que la clé de la chose doit se trouver planquée quelque part dans la base de registre. Qu’à cela ne tienne, on va la mettre sous surveillance. Pour ce faire, un petit clic ici pour se saisir de RegFromApp qui permet d’enregistrer les modifications apportées au registre par un processus.

On commence par lancer AIMP2, puis RegFromApp qui nous demande alors de sélectionner le processus qu’il doit inspecter. Comme on a de la suite dans les idées, on sélectionne AIMP2.exe. On retourne dans AIMP2 pour y enregistrer les associations et on n’a plus qu’à sauver le travail du sieur RegFromApp dans un fichier registre Aimp.reg qu’on glisse délicatement dans notre dossier AIMP2 à nous.

Et là, forcément, on se dit qu’on n’aura plus qu’à fusionner Aimp.reg dans la phase d’installation pour que les associations soient effectives.

Ben non, y’a encore un problème : certaines des clés que modifie AIMP2 sont protégées. Et si vous tentez de les modifier façon brutale en fusionnant le fichier Aimp.reg sur une machine fraîchement installée, vous vous retrouvez face à une erreur.

À force de tâtonner, on s’aperçoit que ladite erreur est provoquée par les tentatives d’écriture sur les clés de type
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.ext\UserChoice
.ext est l’extension à associer avec AIMP2.

Le truc débile qui nous sauve, c’est que c’est le contenu de la clé qui est protégé, mais pas la clé elle-même. Il suffit donc tout bêtement de la supprimer avant que de la réécrire. Sauf qu’il y a une bonne quarantaine de clés de cet ordre à rectifier et qu’on a pas d’autre choix que de le faire à la main. Oui, c’est con, mais c’est pas ma faute à moi! Vous plaignez pas, vu que maintenant que je l’ai fait, ça vous épargne de le refaire (mais si, c’est un peu plus bas sur cette même page, regardez bien!)…

Dernier point d’importance : les modifications apportées au registre dépendent du système puisqu’elles se référent pour l’essentiel à aimp2.exe qui est rangé dans C:\Program Files\AIMP2 si on est en 32 bits et dans C:\Program Files (x86)\AIMP2 si on est en 64 bits. Il nous faut donc bel et bien deux fichiers que l’on nommera respectivement aimp32.reg et aimp64.reg.

Il ne nous reste plus qu’à faire en sorte qu’Install.vbs se charge de fusionner le bon fichier en fonction du système, ce qui s’opère sans difficulté avec les lignes qui suivent :

'Inscription dans le registre
If WshSysEnv("PROCESSOR_ARCHITECTURE") = "AMD64" Then
	strCheminFichierReg = strCheminDossierScript & "\Aimp64.reg"
Else
	strCheminFichierReg = strCheminDossierScript & "\Aimp32.reg"
End If
objShell.Run "regedit /s " & Chr(34) & strCheminFichierReg & Chr(34), 0, True

Un dernier petit truc pour ceux qui cultivent l’amour du travail bien fait. AIMP2 enregistre ses préférences à lui dans un fichier AIMP2.ini dissimulé dans un dossier AIMP qu’il crée lors de son premier lancement dans C:\Users\{username}\AppData\Roaming.
Si vous avez des préférences qui vous tiennent particulièrement à cœur et qu’il vous barbe d’aller reconfigurer à chaque installation, il vous suffit de récupérer AIMP2.ini sur une machine de test correctement paramétrée et de le re-balancer négligemment avec les quelques lignes que voici :

'Chemin du fichier Ini à copier
strCheminIni = strCheminDossierScript & "\AIMP2.ini"
'Si le fichier Ini existe, on crée le dossier "AIMP" dans C:\Users\{username}\AppData\Roaming et on l'y copie
If objFSO.FileExists(strCheminIni) Then
	strCheminAIMP = objShell.ExpandEnvironmentStrings("%APPDATA%") & "\AIMP"
	If Not objFSO.FolderExists(strCheminAIMP) Then
		Set dossierAIMP = objFSO.CreateFolder(strCheminAIMP)
	End If
	objFSO.CopyFile strCheminIni, strCheminAIMP & "\", True
End If

Ouf! Je crois bien qu’on en a fini!

Récapitulons!

Aux cotés d’Installation.vbs et d’UI.hta , nous avons les deux dossiers AIMP2 et Avast.

Dans le dossier AIMP2, nous trouvons un dossier Data qui contient Aimp.ini, un dossier Langs qui contient french.lng, Aimp.exe qui fait fièrement son installateur, Aimp32.reg ET Aimp64.regqui contiennent les modifications à apporter au registre pour assurer l’association d’AIMP2 avec tous les types de fichiers audio, AIMP2.ini qui renferme nos préférences chéries, Description.txt qui contient le texte "Installation de AIMP 2.61.583." et enfin Install.vbs qui est censé cuisiner l’ensemble.

Dans le dossier d’Avast figurent Avast.exe, l’installateur généreusement fourni par Avast, Description.txt qui contient le texte "Installation de Avast 6.0.1091.0.", Install.vbs et CloseWindowAvast.exe.

Lorsqu’il est exécuté, UI.hta va lire les fichiers Descritption.txt dans les dossiers AIMP2 et Avast pour en afficher le contenu.

Il va ensuite lancer le fichier Install.vbs contenu dans le dossier AIMP2.
Losrque celui-ci a achevé son ouvrage, UI.hta ne s’arrête pas en si bon chemin et lance le fichier Install.vbs qu’il trouve dans le dossier Avast.

Quand, enfin, il ne trouve plus rien à lancer, UI.hta procède au redémarrage de la machine.

Quelques petites remarques

Il n’a pas échappé à votre vigilance qu’on peut fort bien ne pas s’arrêter là et installer ainsi une pelletée de logiciels. C’est très exactement ce pour quoi ce petit bazar a été conçu : Il suffit de glisser dans un même dossier l’installateur de son choix, un fichier Description.txt au contenu explicite et un fichier Install.vbs qu’UI.hta se fera un malin plaisir d’aller lancer.
De même, vous aurez bien évidemment noté qu’UI.hta parcourt les dossiers par ordre alphabétique et qu’il vous revient donc de les nommer judicieusement si vous désirez qu’un soft soit installé préalablement à un autre.

Téléchargement

Je livre à votre sagacité le dossier "maître" qui contient donc Installation.vbs et UI.hta ainsi que les dossiers AIMP2 et Avast. Néanmoins, pour ne pas encombrer inutilement les serveurs de mon hébergeur à moi et que j’aime (Web4All pour les intimes), c’est à vous qu’il revient d’aller télécharger d’un habile clic de votre souris favorite les installateurs d’AIMP2 et Avast.
Rappelez-vous néanmoins qu’il vous faut songer à les débloquer et à les renommer respectivement en Aimp.exe et Avast.exe.

Pour aller plus loin

À celles et ceux qui souhaiteraient en savoir un peu plus sur le vbscript, je ne saurais que trop leur conseiller de jeter un œil ici.
Pour les petits curieux qui s’interrogent sur ce qui se cache derrière le hta, c’est dans le même coin, précisément .
 
 

Page vue 15 596 fois

3 commentaires

  1. Sapajou dit :

    Bonjour,
    Actuellement je suis sous XP. Je projete de passer à Windows 7.
    J’ai suivi votre tuto, IMPECCABLE, jusqu’à la mise en place des programmes, Windows Live Mail en l’occurence.
    Si j’utilise « Installations silencieuses » tel que, j’ai bien le message ‘fichier introuvable’ OK
    Si je supprime les dossiers AIMP2 et AVAST et j’ajoute le dossier WindowsLive avec Description, install, Wlsetup-all.exe l’ensemble tourne indéfiniment !
    Je ne voie pas du tout où est l’erreur. Il faut dire que je ne suis pas un spécialiste.
    Pouvez vous me mettre sur la voie.
    Je vous en remercie à l’avance.

    Cordialement.

    Jean

  2. Laurent dit :

    Bonjour Jean,
    La version de Windows Live vers laquelle pointe le lien qui figure dans ce post n’est pas supportée par Windows XP.
    Or, si j’ai bien compris, vous êtes toujours sous XP.
    Si vous tentez malgré tout de lancer Install.vbs sur votre machine, celui-ci va bien exécuter Wlsetup-all.exe mais en en cachant toutes les fenêtres, et en particulier celle qui vous informe que cette version n’est pas adaptée à XP laquelle va attendre indéfiniment que vous cliquiez sur le bouton "OK" pour la fermer.
    Si je ne m’abuse, vous pouvez télécharger la version destinée à XP ici.
    Par ailleurs, si vous voulez vous familiariser avec Seven sans pour autant faire le grand saut, vous pouvez l’installer sur une machine virtuelle grâce VirtualBox qui est libre, gratuit et très largement documenté sur la toile.
    Cordialement,
    Laurent.

  3. Philippe dit :

    Excellent ! Un grand merci !

Laissez une réponse