Lancement d’applications Windows avec des paramètres
Investigation
Certains lanceurs d’applications Windows dans le menu Démarrer nécessitent l’utilisation des paramètres à passer à l’exécutable lors du lancement de l’application Windows. Pour ce faire, nous devons d’abord identifier le lanceur nécessitant le paramètre avant d’intégrer l’application Windows à l’infrastructure de support de package.
Identification des conditions requises pour le paramètre du lanceur d’applications Windows
Installez votre application Windows sur une machine de test.
Ouvrez le menu Démarrer de Windows.
Recherchez et sélectionnez votre lanceur d’applications Windows dans le menu Démarrer.
Si l’application démarre, vous ne rencontrez aucun problème (testez tous les lanceurs d’applications Windows associés dans le menu Démarrer).
Désinstallez l’application Windows de la machine de test.
À l’aide du support d’installation Win32, installez l’application sur votre ordinateur de test.
Ouvrez le menu Démarrer de Windows.
Recherchez et cliquez avec le bouton droit sur votre application Windows dans le menu Démarrer.
Sélectionnez Plus>>d’emplacement de fichier ouvert dans le menu déroulant.
Cliquez avec le bouton droit sur le premier raccourci d’application associé (répétez les trois étapes suivantes pour tous les raccourcis d’application associés).
Sélectionnez Propriétés dans le menu déroulant.
Passez en revue la valeur dans la zone de texte à droite de La cible. Après le chemin du fichier d’application, s’il existe un paramètre répertorié, cette application
Enregistrez la valeur du paramètre pour une utilisation ultérieure.
Résolution
Les applications Windows redirigent des répertoires spécifiques liés à l’application vers le C:\Program Files\WindowsApps
dossier. Si une application tente d’écrire dans le conteneur d’applications Windows, une erreur se déclenche et l’écriture échoue.
Pour résoudre le problème lié à l’application Windows qui n’a pas réussi à écrire dans le conteneur d’applications Windows, nous devons suivre les quatre étapes suivantes :
- Étape de l’application Windows vers un répertoire local
- Créer le fichier Config.json et injecter les fichiers PSF requis
- Mettre à jour le fichier AppxManifest de l’application Windows
- Repackager et signer l’application Windows
Les étapes ci-dessus fournissent des conseils en extrayant le contenu de l’application Windows dans un répertoire intermédiaire local, en injectant les fichiers de correctif PSF dans le répertoire de l’application Windows intermédiaire, en configurant l’application Lanceur pour pointer vers le lanceur PSF, puis en config.json pour rediriger le lanceur PSF vers l’application spécifiant le répertoire de travail.
Télécharger et installer les outils requis
Ce processus vous guide tout au long de la récupération et de l’utilisation des outils suivants :
- Outil client NuGet
- Framework de prise en charge de package
- Kit de développement logiciel (SDK) Windows 10 (dernière version)
- Moniteur de processus SysInternals
Les instructions suivantes fournissent des instructions pas à pas sur le téléchargement et l’installation des outils requis.
Téléchargez la dernière version (sans préversion) de l’outil client NuGet et enregistrez le fichier nuget.exe dans le
C:\PSF\nuget
dossier.Téléchargez l’infrastructure de prise en charge du package à l’aide de Nuget en exécutant ce qui suit à partir d’une fenêtre PowerShell Administration istrative :
Set-Location "C:\PSF" .\nuget\nuget.exe install Microsoft.PackageSupportFramework
Téléchargez et installez le kit de développement logiciel Windows 10 Shared Computer Toolkit (Kit de développement logiciel Win 10).
- Téléchargez le Kit de développement logiciel (SDK) Win 10.
- Exécutez winsdksetup.exe qui a été téléchargé à l’étape précédente.
- Sélectionnez le bouton Suivant.
- Sélectionnez uniquement les trois fonctionnalités suivantes pour l’installation :
- Outils de signature du Kit de développement logiciel (SDK) Windows pour les applications de bureau
- Kit de développement logiciel (SDK) Windows pour les applications C++ UWP
- Sdk Windwos pour la localisation des applications UWP
- Sélectionnez le bouton Installer.
- Sélectionnez le bouton OK.
Étape de l’application Windows
En mettant en lots l’application Windows, nous allons extraire /décompresser le contenu de l’application Windows dans un répertoire local. Une fois que l’application Windows a été décompressée à l’emplacement intermédiaire, les fichiers de correctif PSF peuvent être injectés pour corriger les expériences indésirables.
Ouvrez une fenêtre PowerShell Administration istrative.
Définissez les variables suivantes ciblant votre fichier d’application spécifique et la version du Kit de développement logiciel (SDK) Windows 10 :
$AppPath = "C:\PSF\SourceApp\PSFSampleApp.msix" ## Path to the MSIX App Installer $StagingFolder = "C:\PSF\Staging\PSFSampleApp" ## Path to where the MSIX App will be staged $OSArchitecture = "x$((gcim Win32_Processor).AddressWidth)" ## Operating System Architecture $Win10SDKVersion = "10.0.19041.0" ## Latest version of the Win10 SDK
Décompressez l’application Windows dans le dossier intermédiaire en exécutant l’applet de commande PowerShell suivante :
## Sets the directory to the Windows 10 SDK Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture" ## Unpackages the Windows app to the staging folder .\makeappx.exe unpack /p "$AppPath" /d "$StagingFolder"
Créer et injecter des fichiers PSF requis
Pour appliquer des actions correctives à l’application Windows, un fichier config.json doit être créé et fourni avec des informations sur le lanceur d’applications Windows qui échoue. S’il existe plusieurs lanceurs d’applications Windows qui rencontrent des problèmes, le fichier config.json peut être mis à jour avec plusieurs entrées.
Après la mise à jour du fichier config.json, le fichier config.json et la prise en charge des fichiers de correctif PSF doivent ensuite être déplacés à la racine du package d’application Windows.
Ouvrez Visual Studio Code (VS Code) ou tout autre éditeur de texte.
Créez un fichier en sélectionnant le menu Fichier en haut de VS Code, en sélectionnant Nouveau fichier dans le menu déroulant.
Enregistrez le fichier en tant que config.json, en sélectionnant le menu Fichier en haut de la fenêtre VS Code, en sélectionnant Enregistrer dans le menu déroulant. Dans la fenêtre Enregistrer sous, accédez au répertoire intermédiaire de l’application Windows (C :\PSF\Staging\PSFSampleApp) et définissez le nom
config.json
de fichier comme . Cliquez sur le bouton Enregistrer.Copiez le code suivant dans le fichier config.json nouvellement créé.
{ "applications": [ { "id": "", "executable": "", "arguments": "" } ] }
Ouvrez le fichier AppxManifest d’application Windows intermédiaire situé dans le dossier intermédiaire de l’application Windows (C :\PSF\Staging\PSFSampleApp\AppxManifest.xml) à l’aide de VS Code ou d’un autre éditeur de texte.
<Applications> <Application Id="PSFSAMPLE" Executable="VFS\ProgramFilesX64\PS Sample App\PSFSample.exe" EntryPoint="Windows.FullTrustApplication"> <uap:VisualElements BackgroundColor="transparent" DisplayName="PSFSample" Square150x150Logo="Assets\StoreLogo.png" Square44x44Logo="Assets\StoreLogo.png" Description="PSFSample"> <uap:DefaultTile Wide310x150Logo="Assets\StoreLogo.png" Square310x310Logo="Assets\StoreLogo.png" Square71x71Logo="Assets\StoreLogo.png" /> </uap:VisualElements> </Application> </Applications>
Définissez la
applications.id
valeur dans config.jsoncomme indiqué dans le champ Applications.Application.ID du fichier AppxManifest.xml.Définissez la
applications.executable
valeur dans config.jsonpour cibler le chemin d’accès relatif à l’application située dans le champ Applications.Application.Exécutable du fichier AppxManifest.xml.Définissez la
applications.arguments
valeur dans config.jsonpour qu’elle corresponde à l’argument utilisé pour lancer l’application. Consultez la valeur enregistrée à partir de l’étape finale de l’examen - Identification des instructions relatives aux paramètres du lanceur d’applications Windows.Définissez la
applications.workingdirectory
valeur dans config.jsonpour cibler le chemin du dossier relatif trouvé dans le champ Applications.Application.Exécutable du fichier AppxManifest.xml.Enregistrez le fichier config.json mis à jour.
{ "applications": [ { "id": "PSFSample", "executable": "VFS/ProgramFilesX64/PS Sample App/PSFSample.exe", "arguments": "/bootfromsettingshortcut" } ] }
Copiez les quatre fichiers suivants à partir du Package Support Framework en fonction de l’architecture exécutable de l’application à la racine de l’application Windows intermédiaire. Les fichiers suivants se trouvent dans . \Microsoft.PackageSupportFramework.<Version>\bin.
Application (x64) Application (x86) PSF Lanceur 64.exe PSF Lanceur 32.exe PSFRuntime64.dll PSFRuntime32.dll PSFRunDll64.exe PSFRunDll32.exe
Mettre à jour AppxManifest
Après avoir créé et mis à jour le fichier config.json, le fichier AppxManifest.xml de l’application Windows doit être mis à jour pour chaque lanceur d’applications Windows inclus dans config.json. Les applications AppxManifest doivent désormais cibler le fichier PSF Lanceur.exe associé à l’architecture des applications.
Ouvrez Explorateur de fichiers, puis accédez au dossier d’application MSIX intermédiaire (C :\PSF\Staging\PSFSampleApp).
Cliquez avec le bouton droit sur AppxManifest.xml, puis sélectionnez Ouvrir avec code dans le menu déroulant (si vous le souhaitez, vous pouvez ouvrir avec un autre éditeur de texte).
Mettez à jour le fichier AppxManifest.xml avec les informations suivantes :
<Package ...> ... <Applications> <Application Id="PSFSample" Executable="PSFLauncher32.exe" EntryPoint="Windows.FullTrustApplication"> ... </Application> </Applications> </Package>
Empaqueter à nouveau l’application
Toutes les corrections ont été appliquées, maintenant l’application Windows peut être re empaquetée dans un MSIX et signée à l’aide d’un certificat de signature de code.
Ouvrez une fenêtre PowerShell Administration istrative.
Définissez les variables suivantes :
$AppPath = "C:\PSF\SourceApp\PSFSampleApp_Updated.msix" ## Path to the MSIX App Installer $CodeSigningCert = "C:\PSF\Cert\CodeSigningCertificate.pfx" ## Path to your code signing certificate $CodeSigningPass = "<Password>" ## Password used by the code signing certificate $StagingFolder = "C:\PSF\Staging\PSFSampleApp" ## Path to where the MSIX App will be staged $OSArchitecture = "x$((gcim Win32_Processor).AddressWidth)" ## Operating System Architecture $Win10SDKVersion = "10.0.19041.0" ## Latest version of the Win10 SDK
Repackez l’application Windows à partir du dossier intermédiaire en exécutant l’applet de commande PowerShell suivante :
Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture" .\makeappx.exe pack /p "$AppPath" /d "$StagingFolder"
Signez l’application Windows en exécutant l’applet de commande PowerShell suivante :
Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture" .\signtool.exe sign /v /fd sha256 /f $CodeSigningCert /p $CodeSigningPass $AppPath