Voici la Template que j’utilise pour pouvoir faire un déploiement d’une APPS en .exe
### Variables
# Chemin UNC vers le partage qui contient l'exécutable
$SharedFolder = "\\SRV\logiciels gpo\DWGTRUEVIEWER"
# Chemin vers le dossier temporaire local sur le poste
$LocalFolder = "C:\TEMP"
# Nom de l'exécutable
$ExeName = "DWGTrueViewer.exe"
# Argument(s) à associer à l'exécutable
$ExeArgument = "-q"
# 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"
}
# Version cible de l'exécutable (obtenue sur une installation manuelle)
$ExeVersion = "31.0.154.0"
# Chemin vers l'exécutable une fois l'installation terminée
$ExeInstallPath = "C:\Program Files\Autodesk\DWG TrueView 2025 - French\dwgviewr.exe"
# Le logiciel est-il déjà installé dans la bonne version ?
$InstalledVersion = (Get-ItemProperty -Path "C:\Program Files\Autodesk\DWG TrueView 2025 - French\dwgviewr.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 !"
}