Lancer des applications avec des paramètres via l’infrastructure de prise en charge des packagesLaunch Apps with Parameters through Package Support Framework

L’infrastructure de prise en charge des packages utilise un config.jsfichier pour configurer le comportement d’une application.The Package Support Framework uses a config.json file to configure the behavior of an application.

La stockéeProceedure

Pour configurer l’exécution de l’application afin de recevoir les valeurs de paramètres qui lui sont passées lors du lancement de l’application, vous devez effectuer les étapes suivantes.To configure the application execution to receive parameter values passed into it during application launch, the following steps must be completed.

  1. Télécharger l’infrastructure de prise en charge du packageDownload the Package Support Framework
  2. Configurer l’infrastructure de prise en charge des packages (config.jssur)Configure the Package Support Framework (config.json)
  3. Injecter les fichiers de l’infrastructure de prise en charge du package dans le package d’applicationInject the Package Support Framework files into the Application package
  4. Mettre à jour le fichier manifeste de l’applicationUpdate the application's manifest file
  5. Recréer le package de l’applicationRe-package the application

Télécharger l’infrastructure de prise en charge du packageDownload the Package Support Framework

L’infrastructure de prise en charge des packages peut être récupérée à l’aide de l’outil autonome NuGet ou de Visual Studio.The Package Support Framework can be retrieved by using the standalone Nuget commandline tool or via Visual Studio.

Outil NuGet comandline :Nuget comandline tool:

Installez l’outil CommandLine NuGet à partir du site Web NuGet : https://www.nuget.org/downloads .Install the Nuget commandline tool from the nuget website: https://www.nuget.org/downloads. Après l’installation, exécutez la ligne de commande suivante dans une fenêtre PowerShell d’administration.After installing, run the following commandline in an administrative PowerShell window.

nuget install Microsoft.PackageSupportFramework

Visual Studio :Visual Studio:

Dans Visual Studio, cliquez avec le bouton droit sur le nœud de votre solution/projet et choisissez l’une des commandes gérer les packages NuGet.In Visual Studio, right-click on your solution/project node and pick one of the Manage Nuget Packages commands. Recherchez Microsoft. PackageSupportFramework ou des fibres discontinues pour trouver le package sur NuGet.org. Ensuite, installez-le.Search for Microsoft.PackageSupportFramework or PSF to find the package on nuget.org. Then, install it.

Créer le config.jssur le fichierCreate the config.json file

Pour spécifier les arguments requis pour lancer l’application, vous devez modifier la config.jssur le fichier en spécifiant l’exécutable de l’application et les paramètres.To specify the arguements required to launch the application, you must modify the config.json file specifying the application executable, and parameters. Avant de configurer le config.jssur le fichier, consultez le tableau suivant pour comprendre le Strucuture JSON.Prior to configuring the config.json file, review the following table to understand the JSON strucuture.

Schéma JSONJson Schema

ArrayArray keykey ValueValue
applicationsapplications idid Utilisez la valeur de l’attribut ID de l’élément application dans le manifeste du package.Use the value of the ID attribute of the Application element in the package manifest.
applicationsapplications executableexecutable Chemin d’accès relatif au package à l’exécutable que vous souhaitez démarrer.The package-relative path to the executable that you want to start. Il s’agit de la valeur de l’attribut Executable de l’élément application.It's the value of the Executable attribute of the Application element.
applicationsapplications argumentsarguments Facultatif Arguments de paramètre de ligne de commande pour l’exécutable.(Optional) Command line parameter arguments for the executable.
applicationsapplications workingDirectoryworkingDirectory Facultatif Chemin d’accès relatif au package à utiliser comme répertoire de travail de l’application qui démarre.(Optional) A package-relative path to use as the working directory of the application that starts. Si vous ne définissez pas cette valeur, le système d’exploitation utilise le répertoire system32 comme répertoire de travail de l’application.If you don't set this value, the operating system uses the System32 directory as the application's working directory. Si vous fournissez une valeur sous la forme d’une chaîne vide, le répertoire de l’exécutable référencé est utilisé.If you supply a value in the form of an empty string, it will use the directory of the referenced executable.
applicationsapplications monitormonitor Facultatif S’il est présent, le moniteur identifie un programme secondaire qui doit être lancé avant le démarrage de l’application principale.(Optional) If present, the monitor identifies a secondary program that is to be launched prior to starting the primary application.
processusprocesses executableexecutable Dans la plupart des cas, il s’agit du nom de l’exécutable configuré ci-dessus avec le chemin d’accès et l’extension de fichier supprimés.In most cases, this will be the name of the executable configured above with the path and file extension removed.
définitionsfixups dlldll Chemin d’accès relatif au package à la correction,. msix/. AppX à charger.Package-relative path to the fixup, .msix/.appx to load.
définitionsfixups configconfig Facultatif Contrôle le comportement de la dll de correction.(Optional) Controls how the fixup dll will behave. Le format exact de cette valeur varie en fonction de la correction, car chaque correction peut interpréter cet objet « BLOB » comme il le souhaite.The exact format of this value varies on a fixup-by-fixup basis as each fixup can interpret this "blob" as it wants.

Les clés des applications, des processus et des corrections sont des tableaux.The applications, processes, and fixups keys are arrays. Cela signifie que vous pouvez utiliser le config.jssur un fichier pour spécifier plusieurs DLL d’application, de processus et de correction.That means that you can use the config.json file to specify more than one application, process, and fixup DLL.

Une entrée dans les processus a une valeur nommée Executable, dont la valeur doit être formée comme une chaîne RegEx pour correspondre au nom d’un processus exécutable sans chemin d’accès ou extension de fichier.An entry in processes has a value named executable, the value for which should be formed as a RegEx string to match the name of an executable process without path or file extension. Le lanceur attend SDK Windows syntaxe RegEx :: Library RegEx ECMAList pour la chaîne RegEx.The launcher will expect Windows SDK std:: library RegEx ECMAList syntax for the RegEx string.

{
    "applications": [
      {
        "id": "PSFExampleID",
        "executable": "VFS\\ThisPCDesktopFolder\\IG-Bentley.exe",
        "workingDirectory": "",
      }
    ],
}

Injecter les fichiers de l’infrastructure de prise en charge du package dans le package d’applicationInject the Package Support Framework files to the Application package

Créer le dossier intermédiaire du packageCreate the package staging folder

Si vous disposez déjà d’un fichier. msix (ou. AppX), vous pouvez décompresser son contenu dans un dossier de disposition qui servira de zone de transit pour votre package.If you have a .msix (or .appx) file already, you can unpack its contents into a layout folder that will serve as the staging area for your package. Vous pouvez le faire à partir d’une invite de commandes à l’aide de l’outil MakeAppx.You can do this from a command prompt using the MakeAppx tool.

L’outil MakeAppx se trouve à son emplacement par défaut :MakeAppx tool can be found in its default location:

Architecture du système d’exploitationOS Architecture RépertoireDirectory
Windows 10 x86Windows 10 x86 C:\Program Files\Windows Kits\10\bin [ Version] \x86\makeappx.exeC:\Program Files\Windows Kits\10\bin[Version]\x86\makeappx.exe
Windows 10 x64Windows 10 x64 C:\Program Files (x86) \Windows Kits\10\bin [ Version] \x64\makeappx.exeC:\Program Files (x86)\Windows Kits\10\bin[Version]\x64\makeappx.exe
makeappx unpack /p PrimaryApp.msix /d PackageContents

La commande PowerShell ci-dessus exporte le contenu de l’application dans un répertoire local.The above PowerShell command will export the contents of the application into a local directory.

Injecter les fichiers requisInject required files

Ajoutez la DLL et les fichiers exécutables de l’infrastructure de prise en charge des packages 32 bits et 64-bit requis au répertoire du package.Add the required 32-bit and 64-bit Package Support Framework DLL(s) and executable files to the package directory. Inspirez-vous du tableau suivant.Use the following table as a guide. Vous devez également inclure tous les correctifs Runtime nécessaires.You will also want to include any runtime fixes as required. Pour obtenir de l’aide sur l’utilisation de l’infrastructure de prise en charge des packages pour les correctifs d’exécution, consultez l’article informations sur le package support FrameworkVisit Package Support Framework Runtime fixes Docs article for guidance on using the Package Support Framework for runtime fixes.

L’exécutable de l’application est x64Application executable is x64 L’exécutable de l’application est x86Application executable is x86
PSFLauncher64.exePSFLauncher64.exe PSFLauncher32.exePSFLauncher32.exe
PSFRuntime64.dllPSFRuntime64.dll PSFLauncher32.dllPSFLauncher32.dll
PSFRunDll64.exePSFRunDll64.exe PSFRunDll32.exePSFRunDll32.exe

Ces fichiers identifiés ci-dessus, ainsi que les config.jssur le fichier, doivent être placés dans la racine de votre répertoire de package d’application.These above identified files, as well as the config.json file must be placed within the root of your application package directory.

Mettre à jour le manifeste de l’applicationUpdate the application's manifest

Ouvrez le manifeste applications dans un éditeur de texte, puis définissez l’attribut Executable de l’élément application sur le nom du fichier exécutable PSFLauncher.Open the applications manifest in a text editor, then set the Executable attribute of the application element to the name of the PSFLauncher executable file. Si vous connaissez l’architecture de votre application cible, sélectionnez la version appropriée, PSFLauncher [x64/x86]. exe.If you know the architecture of your target application, select the appropriate version, PSFLauncher[x64/x86].exe. S’il est inconnu, PSFLauncher32.exe fonctionnera dans tous les cas.If unknown, PSFLauncher32.exe will work in all cases.

<Package ...>
  ...
  <Applications>
    <Application Id="PSFSample"
                 Executable="PSFLauncher32.exe"
                 EntryPoint="Windows.FullTrustApplication">
      ...
    </Application>
  </Applications>
</Package>

Recréer le package de l’applicationRe-package the application

Ré-empaqueter l’application à l’aide de l’outil makeappx.Re-package the application using the makeappx tool. Consultez l’exemple suivant illustrant comment empaqueter et signer l’application à l’aide de PowerShell :See the following example of how to package and sign the application using PowerShell:

makeappx pack /d PackageContents /p PSFSamplePackageFixup.msix
signtool sign /a/v/fd sha256 /f ExportedSigningCertificate.pfx PSFSamplePackageFixup.msix