Skip to main content

3- Déploiement de .EXE

a)Mise en place des .exe dans le dossier

Pour cette partie, j'ai donc utilisé 7zip comme exemple, mais attention, ce n'est pas tous les exécutables qui peuvent fonctionner avec cette méthode. Par exemple, CrystalDiskInfo, qui permet de voir la vie des disques durs, ne peut être installé de cette façon.

J'ai donc téléchargé 7zip sur son site officiel, puis copier dans le dossier :

image.png

b)Création du script

 Après la copie de 7zip, nous allons donc ouvrir "Windows PowerShell ISE" :

image.png

Une fois ouvert, nous allons donc y coller ça (bien sûr si vous installez un autre logiciel, modifiez cela pour le vôtre) :

### Variables
# Chemin vers le partage qui contient l'exécutable
$SharedFolder = "\\WIN-SRV-ML150-G\Logiciel$"

# Chemin vers le dossier temporaire local sur le poste
$LocalFolder = "C:\TEMP"

# Nom de l'exécutable
$ExeName = "7z2409-x64.exe"

# Argument(s) à associer à l'exécutable
$ExeArgument = "/S" # pour ordonné une installation silencieuse

# Version cible de l'exécutable (obtenue sur une installation manuelle)
$ExeVersion = "24.09"

# Chemin vers l'exécutable une fois l'installation terminée
$ExeInstallPath = "C:\Program Files\7-Zip\7zFM.exe"

# Le logiciel est-il déjà installé dans la bonne version ?
$InstalledVersion = (Get-ItemProperty -Path "C:\Program Files\7-Zip\7zFM.exe" -ErrorAction SilentlyContinue).VersionInfo.FileVersion

if(($InstalledVersion -eq $null) -or ($InstalledVersion -ne $null -and $InstalledVersion -ne $ExeVersion)){

   # Si $InstalledVersion n'est pas null et que la version est différente : c'est qu'il faut faire une mise à jour
   if($InstalledVersion -ne $null){ 
      Write-Output "Le logiciel va être mis à jour : $InstalledVersion -> $ExeVersion"
   }

   # Si le chemin réseau vers l'exécutable est valide, on continue
   if(Test-Path "$SharedFolder\$ExeName"){

     # Créer le dossier temporaire en local et copier l'exécutable sur le poste
     New-Item -ItemType Directory -Path "$LocalFolder" -ErrorAction SilentlyContinue
     Copy-Item "$SharedFolder\$ExeName" "$LocalFolder" -Force

     # Si l'on trouve bien l'exécutable en local, on lance l'installation
     if(Test-Path "$LocalFolder\$ExeName"){
        Start-Process -Wait -FilePath "$LocalFolder\$ExeName" -ArgumentList "$ExeArgument"
     }

     # On supprime l'exécutable à la fin de l'installation
     Remove-Item "$LocalFolder\$ExeName"

   }else{

     Write-Warning "L'exécutable ($ExeName) est introuvable sur le partage !"
   }
}else{
   Write-Output "Le logiciel est déjà installé dans la bonne version !"
}

Une fois cela copié, il faut l'enregistrer dans le dossier partagé, vous faites Ctrl+s ou Fichier > Enregistrer :

image.png

c)Création de la GPO

Comme pour les .MSI, nous allons crée une GPO que je vais noté celle fois si, 7zip.exe :

image.png

Puis nous allons allé dans "Configuration ordinateur > Paramètres Windows > Scripts (démarrage/arrêt) > Démarrage" et on double clic sur "Démarrage". Une fois cela fait, on fais va dans l'onglet "Scripts PowerShell", on lui spécifie qu'il doit "Exécuter les scripts Windows PowerShell en premier" et on Ajoute le script :

image.png

On fais donc "OK" puis "Appliqué :

image.png

Microsoft désactive par défaut les scripts pour des questions de sécurité, nous allons donc spécifier dans la même GPO, l'activation de l'exécution des scripts :

Configuration ordinateur > Modèle d'administration > Composants Windows > Windows PowerShell

Une fois arrivé ici, nous allons ouvrir "Activer l'exécution des scripts" et coché "Activé" puis faire "appliqué".

image.png

Nous n'avons plus rien n'a faire sur Windows server et on passe maintenant à un client Windows 10.

D)Test

Ce test va être simple, on va juste redémarré Windows et cela devrais redescendre tous seul. Dans mon cas 7zip est redescendu tous seul assez rapidement :

image.png