Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les scripts permettent aux professionnels de l’informatique de personnaliser dynamiquement une application dans l’environnement de l’utilisateur une fois qu’elle est empaquetée à l’aide de MSIX. Par exemple, vous pouvez utiliser des scripts pour configurer votre base de données, configurer un VPN, monter un lecteur partagé ou effectuer une vérification de licence dynamiquement. Les scripts offrent une grande flexibilité. Ils peuvent modifier les clés de Registre ou effectuer des modifications de fichier en fonction de la configuration de l’ordinateur ou du serveur.
Vous pouvez utiliser le Package Support Framework (PSF) pour exécuter un script PowerShell avant l’exécution d’un exécutable d’application empaqueté et un script PowerShell après l’exécution de l’exécutable de l’application pour nettoyer. Chaque exécutable d’application défini dans le manifeste de l’application peut avoir ses propres scripts. Vous pouvez configurer le script pour qu’il s’exécute une seule fois sur le premier lancement de l’application et sans afficher la fenêtre PowerShell afin que les utilisateurs ne terminent pas le script prématurément par erreur. Il existe d’autres options pour configurer la façon dont les scripts peuvent s’exécuter, comme indiqué ci-dessous.
Conditions préalables
Pour permettre l’exécution de scripts, vous devez définir la stratégie d’exécution powerShell sur RemoteSigned
. Pour ce faire, exécutez cette commande :
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
La stratégie d’exécution doit être définie pour l’exécutable PowerShell 64 bits et l’exécutable PowerShell 32 bits. Veillez à ouvrir chaque version de PowerShell et à exécuter l’une des commandes indiquées ci-dessus.
Voici les emplacements de chaque exécutable.
- Ordinateur 64 bits :
- Exécutable 64 bits : %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
- Exécutable 32 bits : %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
- Ordinateur 32 bits :
- Exécutable 32 bits : %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
Pour plus d’informations sur les stratégies d’exécution de PowerShell, consultez cet article.
🚩 Veillez également à inclure le fichier StartingScriptWrapper.ps1 dans votre package et à le placer dans le même dossier que votre exécutable. Vous pouvez copier ce fichier à partir du package NuGet PSF ou du dépôt GitHub PSF.
Activer les scripts
Pour spécifier les scripts qui s’exécutent pour chaque exécutable d’application empaquetée, vous devez modifier le fichierconfig.json. Pour indiquer à PSF d’exécuter un script avant l’exécution de l’application empaquetée, ajoutez un élément de configuration appelé startScript
. Pour indiquer à PSF d’exécuter un script une fois l’application empaquetée terminée, ajoutez un élément de configuration appelé endScript
.
Éléments de configuration de script
Voici les éléments de configuration disponibles pour les scripts. Le script de fin ignore les éléments de configuration waitForScriptToFinish
et stopOnScriptError
.
Nom de clé | Type de valeur | Obligatoire ? | Par défaut | Descriptif |
---|---|---|---|---|
scriptPath |
ficelle | Oui | N/A | Chemin d’accès au script, y compris le nom et l’extension. Le chemin d’accès est relatif au répertoire de travail de l’application s’il est spécifié, sinon, il commence au répertoire racine du package. |
scriptArguments |
ficelle | Non | vide | Liste d’arguments délimitées par l’espace. Le format est le même pour un appel de script PowerShell. Cette chaîne est ajoutée à scriptPath pour effectuer un appel PowerShell.exe valide. |
runInVirtualEnvironment |
booléen | Non | vrai | Spécifie si le script doit s’exécuter dans le même environnement virtuel que celui dans lequel l’application empaquetée s’exécute. |
runOnce |
booléen | Non | vrai | Spécifie si le script doit s’exécuter une fois par utilisateur, par version. |
showWindow |
booléen | Non | faux | Spécifie si la fenêtre PowerShell est affichée. |
stopOnScriptError |
booléen | Non | faux | Spécifie s’il faut quitter l’application si le script de démarrage échoue. |
waitForScriptToFinish |
booléen | Non | vrai | Spécifie si l’application empaquetée doit attendre la fin du script de départ avant le démarrage. |
timeout |
DWORD | Non | INFINI | Durée d’exécution du script. Lorsque le temps s’écoule, le script est arrêté. |
Remarque
La configuration de stopOnScriptError: true
et waitForScriptToFinish: false
pour l'application d'exemple n’est pas prise en charge. Si vous définissez ces deux éléments de configuration, PSF retourne l’erreur ERROR_BAD_CONFIGURATION.
Exemple de configuration
Voici un exemple de configuration utilisant deux exécutables d’application différents.
{
"applications": [
{
"id": "Sample",
"executable": "Sample.exe",
"workingDirectory": "",
"stopOnScriptError": false,
"startScript":
{
"scriptPath": "RunMePlease.ps1",
"scriptArguments": "\\\"First argument\\\" secondArgument",
"runInVirtualEnvironment": true,
"showWindow": true,
"waitForScriptToFinish": false
},
"endScript":
{
"scriptPath": "RunMeAfter.ps1",
"scriptArguments": "ThisIsMe.txt"
}
},
{
"id": "CPPSample",
"executable": "CPPSample.exe",
"workingDirectory": "",
"startScript":
{
"scriptPath": "CPPStart.ps1",
"scriptArguments": "ThisIsMe.txt",
"runInVirtualEnvironment": true
},
"endScript":
{
"scriptPath": "CPPEnd.ps1",
"scriptArguments": "ThisIsMe.txt",
"runOnce": false
}
}
],
"processes": [
...(taken out for brevity)
]
}