TP – Automatiser l'installation de logiciels

Ce TP te montre comment automatiser l’installation de logiciels dans Windows Sandbox à l’aide d’un fichier .wsb. Tu vas installer automatiquement Firefox, Chrome, puis une série de logiciels grâce à Chocolatey.

    5tq 6tq

(Firefox / Chrome + installations via Chocolatey)

À la fin du TP, tu seras capable de :

  • automatiser l’installation d’applications avec des scripts PowerShell ;
  • créer et utiliser un fichier .wsb ;
  • partager un dossier contenant des scripts ;
  • utiliser Chocolatey pour installer plusieurs logiciels rapidement.

Notions essentielles

  1. Un fichier .wsb configure Windows Sandbox (XML).
  2. <LogonCommand> permet d'exécuter un script automatiquement.
  3. Invoke-WebRequest permet de télécharger un installeur depuis Internet.
  4. La sandbox s’efface entièrement à chaque fermeture.
  5. Chocolatey permet d’installer facilement une liste de logiciels.

Préparation

Sur ton PC, crée le dossier :

C:\SandboxTP

À l’intérieur :

  • un sous-dossier Scripts
  • tu y mettras les fichiers PowerShell créés pendant le TP

Voici une section prête à intégrer dans ton article ou ton TP, expliquant comment installer Firefox depuis le dossier partagé plutôt que de le télécharger en ligne.


Installer Firefox depuis le dossier partagé

Dans certains contextes (réseau lent, test hors-ligne, installation répétée en classe), il peut être plus efficace de télécharger l’installeur Firefox une seule fois sur l’hôte, puis de le copier dans le dossier partagé utilisé par Windows Sandbox.

Cette méthode permet à la sandbox de lire l’installeur directement depuis le dossier mappé, sans passer par Internet.


1. Préparer le dossier partagé sur l’hôte

  1. Télécharge l’installeur complet Firefox depuis : https://download.mozilla.org/?product=firefox-latest&os=win64&lang=fr

  2. Enregistre-le dans :

C:\SandboxTP\Shared

Le fichier ressemble généralement à :

Firefox Installer.exe

2. Mapper le dossier dans la Sandbox

Dans ton fichier .wsb, partage ce dossier :

<MappedFolders>
  <MappedFolder>
    <HostFolder>C:\SandboxTP\Shared</HostFolder>
    <SandboxFolder>C:\Shared</SandboxFolder>
    <ReadOnly>true</ReadOnly>
  </MappedFolder>
</MappedFolders>

➡️ Dans la sandbox, le dossier apparaîtra sous :

C:\Shared

3. Script d’installation dans la Sandbox

Crée un script PowerShell dans C:\SandboxTP\Scripts :

install_firefox_local.ps1

$installerPath = "C:\Shared\Firefox Installer.exe"

if (Test-Path $installerPath) {
    Write-Host "Installation de Firefox depuis le dossier partagé..." -ForegroundColor Cyan
    Start-Process $installerPath -ArgumentList "/S" -Wait
    Write-Host "Firefox installé avec succès !" -ForegroundColor Green
}
else {
    Write-Host "ERREUR : fichier introuvable dans C:\Shared" -ForegroundColor Red
}

4. Configurer le .wsb pour exécuter le script

<Configuration>

  <MappedFolders>
    <MappedFolder>
      <HostFolder>C:\SandboxTP\Shared</HostFolder>
      <SandboxFolder>C:\Shared</SandboxFolder>
      <ReadOnly>true</ReadOnly>
    </MappedFolder>

    <MappedFolder>
      <HostFolder>C:\SandboxTP\Scripts</HostFolder>
      <SandboxFolder>C:\Scripts</SandboxFolder>
      <ReadOnly>true</ReadOnly>
    </MappedFolder>
  </MappedFolders>

  <LogonCommand>
    <Command>powershell.exe -ExecutionPolicy Bypass -File "C:\Scripts\install_firefox_local.ps1"</Command>
  </LogonCommand>

</Configuration>

Résultat attendu

Lorsque la sandbox démarre :

  • elle lit l’installeur Firefox depuis C:\Shared,
  • elle lance l’installation silencieuse,
  • Firefox s’installe sans aucun téléchargement Internet.

Avantages de cette méthode

  • Fonctionne hors ligne, même sans connexion Internet.
  • Tu télécharges Firefox une seule fois pour toute une classe.
  • Installation plus rapide, car l’installeur est déjà prêt.
  • Plus stable pour les TP, car on évite les erreurs réseau.

Partie 2 – Installer automatiquement Firefox et Chrome

1. Créer le script PowerShell

Crée dans :

C:\SandboxTP\Scripts

un fichier : install_browsers.ps1

Colle ce script :

Write-Host "Téléchargement et installation de Firefox..." -ForegroundColor Cyan

Invoke-WebRequest "https://download.mozilla.org/?product=firefox-latest&os=win64&lang=fr" `
    -OutFile "$env:TEMP\firefox.exe"

Start-Process "$env:TEMP\firefox.exe" -ArgumentList "/S" -Wait


Write-Host "Téléchargement et installation de Google Chrome..." -ForegroundColor Cyan

Invoke-WebRequest "https://dl.google.com/chrome/install/latest/chrome_installer.exe" `
    -OutFile "$env:TEMP\chrome.exe"

Start-Process "$env:TEMP\chrome.exe" -ArgumentList "/silent","/install" -Wait


Write-Host "Installation des navigateurs terminée !" -ForegroundColor Green

➡️ Installation silencieuse, entièrement automatisée.


2. Créer le fichier .wsb

Crée :

C:\SandboxTP\InstallBrowsers.wsb

Avec :

<Configuration>

  <MappedFolders>
    <MappedFolder>
      <HostFolder>C:\SandboxTP\Scripts</HostFolder>
      <SandboxFolder>C:\Scripts</SandboxFolder>
      <ReadOnly>true</ReadOnly>
    </MappedFolder>
  </MappedFolders>

  <LogonCommand>
    <Command>powershell.exe -ExecutionPolicy Bypass -File "C:\Scripts\install_browsers.ps1"</Command>
  </LogonCommand>

</Configuration>

👉 Double-clique sur .wsb → la sandbox installe Firefox et Chrome sans rien demander.


Partie 2 – Installer plusieurs logiciels grâce à Chocolatey

1. Créer le script PowerShell

Dans C:\SandboxTP\Scripts, crée :

install_choco.ps1

Write-Host "Installation de Chocolatey..." -ForegroundColor Yellow

Set-ExecutionPolicy Bypass -Scope Process -Force

Invoke-Expression ((New-Object System.Net.WebClient).DownloadString(
    'https://community.chocolatey.org/install.ps1'
))

Write-Host "Chocolatey installé !" -ForegroundColor Green


## Liste des logiciels à installer
$packages = @(
    "7zip",
    "vlc",
    "notepadplusplus",
    "git",
    "python"
)

Write-Host "Installation des logiciels..." -ForegroundColor Cyan

foreach ($pkg in $packages) {
    choco install $pkg -y
}

Write-Host "Toutes les installations sont terminées !" -ForegroundColor Green

2. Créer le .wsb correspondant

Crée :

C:\SandboxTP\InstallChoco.wsb

Contenu :

<Configuration>

  <MappedFolders>
    <MappedFolder>
      <HostFolder>C:\SandboxTP\Scripts</HostFolder>
      <SandboxFolder>C:\Scripts</SandboxFolder>
      <ReadOnly>true</ReadOnly>
    </MappedFolder>
  </MappedFolders>

  <LogonCommand>
    <Command>powershell.exe -ExecutionPolicy Bypass -File "C:\Scripts\install_choco.ps1"</Command>
  </LogonCommand>

</Configuration>

Résultat attendu

🎉 La sandbox démarre et :

  1. installe Chocolatey automatiquement ;
  2. installe 7zip, VLC, Notepad++, Git, Python (ou tes propres choix) ;
  3. affiche un message de fin dans PowerShell.

Exercices d’application

Exercice 1 — Ajouter un logiciel Chocolatey

Ajoute googlechrome ou firefox à la liste $packages.


Exercice 2 — Créer un “Pack Développeur”

Installe via Chocolatey :

  • vscode
  • nodejs
  • git
  • python
  • notepadplusplus

Exercice 3 — Personnaliser la sandbox

Crée un .wsb qui :

  • active le GPU ;
  • active le presse-papier ;
  • mappe C:\SandboxTP\Code dans C:\Code ;
  • exécute un script d’installation au démarrage.

Exercice 4 — Sécurité

Explique pourquoi il peut être dangereux d’utiliser un dossier mappé en écriture lorsque tu installes un fichier téléchargé automatiquement.

Pour aller plus loin