Iniciar aplicaciones con parámetros mediante el marco de soporte técnico de paquetesLaunch Apps with Parameters through Package Support Framework

El marco de trabajo compatible con paquetes utiliza un config.jsen el archivo para configurar el comportamiento de una aplicación.The Package Support Framework uses a config.json file to configure the behavior of an application.

ProceedureProceedure

Para configurar la ejecución de la aplicación para recibir los valores de parámetro que se le pasan durante el inicio de la aplicación, se deben completar los siguientes pasos.To configure the application execution to receive parameter values passed into it during application launch, the following steps must be completed.

  1. Descargar el marco de soporte técnico de paquetesDownload the Package Support Framework
  2. Configurar el marco de soporte de paquetes (config.jsen)Configure the Package Support Framework (config.json)
  3. Inyectar los archivos de marco de soporte de paquete en el paquete de aplicaciónInject the Package Support Framework files into the Application package
  4. Actualización del archivo de manifiesto de la aplicaciónUpdate the application's manifest file
  5. Volver a empaquetar la aplicaciónRe-package the application

Descargar el marco de soporte técnico de paquetesDownload the Package Support Framework

El marco de soporte de paquetes se puede recuperar mediante la herramienta de línea de comandos Nuget independiente o a través de Visual Studio.The Package Support Framework can be retrieved by using the standalone Nuget commandline tool or via Visual Studio.

Herramienta comandline de Nuget:Nuget comandline tool:

Instale la herramienta de línea de comandos de Nuget desde el sitio web de Nuget: https://www.nuget.org/downloads .Install the Nuget commandline tool from the nuget website: https://www.nuget.org/downloads. Después de instalar, ejecute la siguiente línea de comandos en una ventana administrativa de PowerShell.After installing, run the following commandline in an administrative PowerShell window.

nuget install Microsoft.PackageSupportFramework

Visual Studio:Visual Studio:

En Visual Studio, haga clic con el botón derecho en el nodo de la solución o el proyecto y elija uno de los comandos administrar paquetes Nuget.In Visual Studio, right-click on your solution/project node and pick one of the Manage Nuget Packages commands. Busque Microsoft. PackageSupportFramework o PSF para encontrar el paquete en Nuget.org. A continuación, instálelo.Search for Microsoft.PackageSupportFramework or PSF to find the package on nuget.org. Then, install it.

Crear el config.jsen el archivoCreate the config.json file

Para especificar los argumentos necesarios para iniciar la aplicación, debe modificar el config.jsen el archivo que especifica el ejecutable de la aplicación y los parámetros.To specify the arguements required to launch the application, you must modify the config.json file specifying the application executable, and parameters. Antes de configurar el config.jsen el archivo, revise la siguiente tabla para comprender el strucuture de JSON.Prior to configuring the config.json file, review the following table to understand the JSON strucuture.

Esquema JSONJson Schema

ArrayArray keykey ValorValue
applicationsapplications idid Utilice el valor del atributo ID del elemento Application en el manifiesto del paquete.Use the value of the ID attribute of the Application element in the package manifest.
applicationsapplications ejecutableexecutable La ruta de acceso relativa del paquete al ejecutable que desea iniciar.The package-relative path to the executable that you want to start. Es el valor del atributo ejecutable del elemento Application.It's the value of the Executable attribute of the Application element.
applicationsapplications argumentosarguments Opta Argumentos de parámetro de línea de comandos para el ejecutable.(Optional) Command line parameter arguments for the executable.
applicationsapplications workingDirectoryworkingDirectory Opta Ruta de acceso relativa del paquete que se va a usar como directorio de trabajo de la aplicación que se inicia.(Optional) A package-relative path to use as the working directory of the application that starts. Si no establece este valor, el sistema operativo usa el directorio system32 como directorio de trabajo de la aplicación.If you don't set this value, the operating system uses the System32 directory as the application's working directory. Si proporciona un valor en el formulario de una cadena vacía, usará el directorio del ejecutable al que se hace referencia.If you supply a value in the form of an empty string, it will use the directory of the referenced executable.
applicationsapplications monitormonitor Opta Si está presente, el monitor identifica un programa secundario que debe iniciarse antes de iniciar la aplicación principal.(Optional) If present, the monitor identifies a secondary program that is to be launched prior to starting the primary application.
procesosprocesses ejecutableexecutable En la mayoría de los casos, este será el nombre del ejecutable que se configuró anteriormente con la ruta de acceso y la extensión de archivo que se han quitado.In most cases, this will be the name of the executable configured above with the path and file extension removed.
correccionesfixups dlldll Ruta de acceso relativa del paquete a la corrección,. msix/. appx que se va a cargar.Package-relative path to the fixup, .msix/.appx to load.
correccionesfixups configconfig Opta Controla cómo se comportará el archivo dll de corrección.(Optional) Controls how the fixup dll will behave. El formato exacto de este valor varía en función de la corrección por corrección, ya que cada corrección puede interpretar este "BLOB" como se desea.The exact format of this value varies on a fixup-by-fixup basis as each fixup can interpret this "blob" as it wants.

Las claves de las aplicaciones, los procesos y las correcciones son matrices.The applications, processes, and fixups keys are arrays. Esto significa que puede usar el config.jsen el archivo para especificar más de una aplicación, proceso y DLL de corrección.That means that you can use the config.json file to specify more than one application, process, and fixup DLL.

Una entrada en procesos tiene un valor denominado ejecutable, el valor para el que debe formar una cadena RegEx para que coincida con el nombre de un proceso ejecutable sin ruta de acceso o extensión de archivo.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. El iniciador esperará Windows SDK sintaxis de STD:: Library RegEx ECMAList para la cadena 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": "",
      }
    ],
}

Inyectar los archivos de marco de soporte de paquete en el paquete de aplicaciónInject the Package Support Framework files to the Application package

Crear la carpeta de almacenamiento provisional del paqueteCreate the package staging folder

Si ya tiene un archivo. msix (o. appx), puede desempaquetar su contenido en una carpeta de diseño que sirva como área de ensayo para el paquete.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. Puede hacerlo desde un símbolo del sistema mediante la herramienta MakeAppx.You can do this from a command prompt using the MakeAppx tool.

La herramienta MakeAppx puede encontrarse en su ubicación predeterminada:MakeAppx tool can be found in its default location:

Arquitectura del SOOS Architecture DirectorioDirectory
Windows 10 x86Windows 10 x86 C:\Archivos de Programa\windows Kits\10\bin [ versión] \x86\makeappx.exeC:\Program Files\Windows Kits\10\bin[Version]\x86\makeappx.exe
Windows 10 x64Windows 10 x64 C:\Archivos de programa (x86) \Windows Kits\10\bin [ versión] \x64\makeappx.exeC:\Program Files (x86)\Windows Kits\10\bin[Version]\x64\makeappx.exe
makeappx unpack /p PrimaryApp.msix /d PackageContents

El comando de PowerShell anterior exportará el contenido de la aplicación en un directorio local.The above PowerShell command will export the contents of the application into a local directory.

Insertar archivos necesariosInject required files

Agregue los archivos DLL y ejecutables del marco de trabajo de compatibilidad de paquetes de 32 bits y 64 bits al directorio del paquete.Add the required 32-bit and 64-bit Package Support Framework DLL(s) and executable files to the package directory. Usa la siguiente tabla como guía.Use the following table as a guide. También querrá incluir las correcciones en tiempo de ejecución según sea necesario.You will also want to include any runtime fixes as required. Visite el artículo sobre correcciones en tiempo de ejecución del paquete de soporte técnicoVisit Package Support Framework Runtime fixes Docs article for guidance on using the Package Support Framework for runtime fixes.

El ejecutable de la aplicación es x64Application executable is x64 El ejecutable de la aplicación es x86Application executable is x86
PSFLauncher64.exePSFLauncher64.exe PSFLauncher32.exePSFLauncher32.exe
PSFRuntime64.dllPSFRuntime64.dll PSFLauncher32.dllPSFLauncher32.dll
PSFRunDll64.exePSFRunDll64.exe PSFRunDll32.exePSFRunDll32.exe

Estos archivos identificados anteriormente, así como el config.jsen el archivo se deben colocar en la raíz del directorio del paquete de aplicación.These above identified files, as well as the config.json file must be placed within the root of your application package directory.

Actualización del manifiesto de la aplicaciónUpdate the application's manifest

Abra el manifiesto de aplicaciones en un editor de texto y, a continuación, establezca el atributo ejecutable del elemento Application en el nombre del archivo ejecutable 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 conoce la arquitectura de la aplicación de destino, seleccione la versión adecuada, PSFLauncher [x64/x86]. exe.If you know the architecture of your target application, select the appropriate version, PSFLauncher[x64/x86].exe. Si se desconoce, PSFLauncher32.exe funcionará en todos los casos.If unknown, PSFLauncher32.exe will work in all cases.

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

Volver a empaquetar la aplicaciónRe-package the application

Vuelva a empaquetar la aplicación mediante la herramienta makeappx.Re-package the application using the makeappx tool. Vea el ejemplo siguiente de cómo empaquetar y firmar la aplicación mediante 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