Aller au contenu

Winget — Déploiement d'applications vers Intune

Wintuner (svrooij/winget-intune-cli) est un outil .NET CLI qui automatise deux étapes en une : packaging d'un installeur depuis Winget en .intunewin, puis publication directe dans Intune via Microsoft Graph.

En MSP, l'avantage clé est le workflow package once, publish many : un package généré une fois peut être publié sur N tenants clients sans repackager.


Prérequis

Prérequis Valeur
OS Windows 10/11 avec Winget disponible
.NET SDK Version 8 minimum
Droits Intune DeviceManagementApps.ReadWrite.All via Graph
Connexion internet Requise (téléchargement installeurs + publication)

Installation

# 1. Installer .NET 8 SDK
winget install microsoft.dotnet.sdk.8 --source winget

# 2. Ajouter la source NuGet
dotnet nuget add source https://api.nuget.org/v3/index.json --name nuget.org

# 3. Installer Wintuner
dotnet tool install --global svrooij.winget-intune.cli

# 4. Vérifier (fermer/rouvrir PowerShell avant)
wintuner --version

Nom de commande

Depuis la v1.1.0, la commande est wintuner (et non winget-intune comme dans les anciennes vidéos). L'exécutable est dans %USERPROFILE%\.dotnet\tools\.


Workflow MSP

1. Trouver l'ID Winget

winget search <nom_application>
# Exemple : VideoLAN.VLC, 7zip.7zip, Google.Chrome.EXE

2. Vérifier le scope d'installation

winget show <ID>
# Chercher le champ "Scope"
Type installeur Scope typique Compatible Intune SYSTEM ?
MSI Machine ✅ Oui
NSIS (.exe) Machine ✅ Oui
MSIX / AppX User ⚠️ Géré différemment
EXE user-scope User ⚠️ Contexte User requis

MSP

Toujours viser machine scope pour les déploiements Intune. L'installation en contexte SYSTEM bypass UAC — aucune interaction utilisateur.

Si le champ Scope est absent dans winget show, consulter le manifeste sur GitHub (microsoft/winget-pkgs) dans le fichier .installer.yaml.

3. Packager

mkdir C:\winget-packages
wintuner package <WingetID> --package-folder C:\winget-packages

Wintuner génère automatiquement dans le sous-dossier <ID>\<version> :

  • *.intunewin — package Intune
  • app.json — métadonnées complètes
  • win32LobApp.json — payload Microsoft Graph
  • detection.txt — règle de détection (MSI product code)
  • readme.txt — commandes install/uninstall

Tip

Wintuner sélectionne automatiquement le meilleur installeur disponible (préférence MSI > EXE). Vérifier le résultat dans le dossier généré.

4. Publier dans Intune

1
2
3
4
5
6
# Tenant courant (authentification interactive)
wintuner publish <WingetID> --package-folder C:\winget-packages --username <UPN>

# Tenant spécifique (multi-client MSP)
wintuner publish <WingetID> --package-folder C:\winget-packages `
  --tenant <TenantID> --username <UPN>

Piège WAM/broker Windows

Toujours ajouter --username <UPN> lors du publish. Sans ce paramètre, l'authentification échoue avec authentication_canceled (problème de broker WAM Windows).

Exemple : --tenant crecas84.onmicrosoft.com --username admin@crecas84.onmicrosoft.com

Le Tenant ID se trouve dans Entra ID > Vue d'ensemble.


Exemple complet — VLC Media Player

1
2
3
4
5
winget search VLC
winget show VideoLAN.VLC
wintuner package VideoLAN.VLC --package-folder C:\winget-packages
wintuner publish VideoLAN.VLC --package-folder C:\winget-packages `
  --tenant crecas84.onmicrosoft.com --username admin@crecas84.onmicrosoft.com

Workflow multi-tenant MSP

1
2
3
4
5
6
7
8
9
# Packager une seule fois
wintuner package VideoLAN.VLC --package-folder C:\winget-packages

# Publier sur chaque tenant client
wintuner publish VideoLAN.VLC --package-folder C:\winget-packages `
  --tenant <TenantID-Client1> --username admin@client1.onmicrosoft.com

wintuner publish VideoLAN.VLC --package-folder C:\winget-packages `
  --tenant <TenantID-Client2> --username admin@client2.onmicrosoft.com

MSP

Stocker les packages dans IT Glue ou un partage réseau MSP. Nommer les dossiers avec la version pour la traçabilité (ex : C:\winget-packages\VideoLAN.VLC\3.0.23).


Configuration dans Intune après publication

Vérifier dans Intune > Applications > Windows :

Paramètre Valeur recommandée
Contexte d'installation System (défaut Wintuner)
Comportement d'installation Install silently
Redémarrage requis Basé sur codes de retour
Attribution Groupe d'appareils (Available ou Required)

Règle de détection

La règle auto-générée par Wintuner utilise le MSI product code et la version. Peut poser problème si la version change sans mise à jour du package — vérifier avant assignation en production.


Pièges courants

Piège Solution
wintuner introuvable après install Fermer/rouvrir PowerShell — PATH non rechargé
Erreur authentication_canceled Ajouter --username <UPN> à la commande publish
Erreur NU1202 Installer .NET 8 SDK (pas .NET 7)
App user-scope publiée en System Vérifier winget show avant de packager
Règle de détection bloquante sur MAJ Désactiver la vérification de version dans la règle si nécessaire
Tenant ID incorrect Le récupérer dans Entra ID > Vue d'ensemble, pas dans Intune
Nom de commande incorrect wintuner (pas winget-intune) depuis v1.1.0

Références

À lire ensuite