Diretório de trabalho atual do PSFCurrent working directory PSF

A estrutura de suporte do pacote usa um config.jsno arquivo para configurar o comportamento de um aplicativo.The Package Support Framework uses a config.json file to configure the behavior of an application.

ProceedureProceedure

Para configurar a execução do aplicativo para receber valores de parâmetro passados para ele durante a inicialização do aplicativo, as etapas a seguir devem ser concluídas.To configure the application execution to receive parameter values passed into it during application launch, the following steps must be completed.

  1. Baixar a estrutura de suporte do pacoteDownload the Package Support Framework
  2. Configurar a estrutura de suporte do pacote (config.jsem)Configure the Package Support Framework (config.json)
  3. Injetar os arquivos da estrutura de suporte do pacote no pacote de aplicativosInject the Package Support Framework files to the Application package
  4. Atualizar o manifesto do aplicativoUpdate the application's manifest
  5. Reempacotar o aplicativoRe-package the application

Baixar a estrutura de suporte do pacoteDownload the Package Support Framework

A estrutura de suporte do pacote pode ser recuperada usando a ferramenta de linha de comando do NuGet autônoma ou por meio do Visual Studio.The Package Support Framework can be retrieved by using the standalone Nuget commandline tool or via Visual Studio.

Ferramenta NuGet comandline:Nuget comandline tool:

Instale a ferramenta de linha de comando do NuGet do site do NuGet: https://www.nuget.org/downloads .Install the Nuget commandline tool from the nuget website: https://www.nuget.org/downloads. Após a instalação, execute a linha de comando a seguir em uma janela administrativa do PowerShell.After installing, run the following commandline in an administrative PowerShell window.

nuget install Microsoft.PackageSupportFramework

Visual Studio:Visual Studio:

No Visual Studio, clique com o botão direito do mouse no nó da solução/projeto e escolha um dos comandos gerenciar pacotes NuGet.In Visual Studio, right-click on your solution/project node and pick one of the Manage Nuget Packages commands. Procure Microsoft. PackageSupportFramework ou PSF para localizar o pacote em NuGet.org. Em seguida, instale-o.Search for Microsoft.PackageSupportFramework or PSF to find the package on nuget.org. Then, install it.

Criar o config.jsno arquivoCreate the config.json file

Para especificar os argumentos necessários para iniciar o aplicativo, você deve modificar o config.jsno arquivo especificando o executável do aplicativo e os parâmetros.To specify the arguements required to launch the applicaiton, you must modify the config.json file specifying the application executable, and parameters. Antes de configurar o config.jsno arquivo, examine a tabela a seguir para entender o strucuture JSON.Prior to configuring the config.json file, review the following table to understand the JSON strucuture.

Esquema JSONJson Schema

ArrayArray chavekey ValorValue
de dimensionamento da Webapplications idid Use o valor do atributo ID do elemento Application no manifesto do pacote.Use the value of the ID attribute of the Application element in the package manifest.
de dimensionamento da Webapplications executávelexecutable O caminho relativo do pacote para o executável que você deseja iniciar.The package-relative path to the executable that you want to start. É o valor do atributo executável do elemento Application.It's the value of the Executable attribute of the Application element.
de dimensionamento da Webapplications argumentosarguments Adicional Argumentos de parâmetro de linha de comando para o executável.(Optional) Command line parameter arguments for the executable.
de dimensionamento da Webapplications workingDirectoryworkingDirectory Adicional Um caminho relativo de pacote a ser usado como o diretório de trabalho do aplicativo que é iniciado.(Optional) A package-relative path to use as the working directory of the application that starts. Se você não definir esse valor, o sistema operacional usará o diretório system32 como o diretório de trabalho do aplicativo.If you don't set this value, the operating system uses the System32 directory as the application's working directory. Se você fornecer um valor na forma de uma cadeia de caracteres vazia, ele usará o diretório do executável referenciado.If you supply a value in the form of an empty string, it will use the directory of the referenced executable.
de dimensionamento da Webapplications monitormonitor Adicional Se estiver presente, o monitor identificará um programa secundário que deve ser iniciado antes de iniciar o aplicativo primário.(Optional) If present, the monitor identifies a secondary program that is to be launched prior to starting the primary application.
processosprocesses executávelexecutable Na maioria dos casos, esse será o nome do executável configurado acima com o caminho e a extensão de arquivo removidos.In most cases, this will be the name of the executable configured above with the path and file extension removed.
ajustesfixups dlldll Adicional Caminho relativo ao pacote para a correção,. msix/. Appx a ser carregado.(Optional) Package-relative path to the fixup, .msix/.appx to load.
ajustesfixups configconfig Adicional Controla a forma com que a DL de correção se comporta.(Optional) Controls how the fixup dl behaves. O formato exato desse valor varia de acordo com a correção, pois cada correção pode interpretar esse "blob" como desejado.The exact format of this value varies on a fixup-by-fixup basis as each fixup can interpret this "blob" as it wants.

As chaves aplicativos, processos e correções são matrizes.The applications, processes, and fixups keys are arrays. Isso significa que você pode usar a config.jsno arquivo para especificar mais de um aplicativo, processo e DLL de correção.That means that you can use the config.json file to specify more than one application, process, and fixup DLL.

Uma entrada em processos tem um valor chamado executável, o valor para o qual deve ser formado como uma cadeia de caracteres RegEx para corresponder ao nome de um processo executável sem caminho ou extensão de arquivo.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. O iniciador esperará SDK do Windows sintaxe de ECMAlist de default:: library para a cadeia de caracteres RegEx.The launcher will expect Windows SDK std:: library RegEx ECMAList syntax for the RegEx string.

{
    "applications": [
        {
            "id": "PSFSample",
            "executable": "PSFSampleApp/PrimaryApp.exe",
            "workingDirectory": "PSFSampleApp/"
        }
    ],
    "processes": [
        {
            "executable": "PSFSample"
        }
    ]
}

No exemplo acima config.jsno arquivo, o PrimaryApp.exe terá o diretório de trabalho Redirecionado para o diretório PSFSampleAppIn the above example config.json file, the PrimaryApp.exe will have the working directory re-directed to the PSFSampleApp Directory.

Injetar os arquivos da estrutura de suporte do pacote no pacote de aplicativosInject the Package Support Framework files to the Application package

Criar a pasta de preparo do pacoteCreate the package staging folder

Se você já tiver um arquivo. msix (ou. AppX), poderá desempacotar seu conteúdo em uma pasta de layout que servirá como a área de preparo para seu pacote.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. Você pode fazer isso em um prompt de comando usando a ferramenta MakeAppx.You can do this from a command prompt using the MakeAppx tool.

A ferramenta MakeAppx pode ser encontrada em seu local padrão:MakeAppx tool can be found in its default location:

Arquitetura do SOOS Architecture DiretórioDirectory
Windows 10 x86Windows 10 x86 C:\Arquivos de Programas\windows Kits\10\bin [ versão] \x86\makeappx.exeC:\Program Files\Windows Kits\10\bin[version]\x86\makeappx.exe
Windows 10 x64Windows 10 x64 C:\Arquivos de programas (x86) \Windows Kits\10\bin [ versão] \x64\makeappx.exeC:\Program Files (x86)\Windows Kits\10\bin[version]\x64\makeappx.exe
makeappx unpack /p PrimaryApp.msix /d PackageContents

O comando do PowerShell acima vai exportar o conteúdo do aplicativo para um diretório local.The above PowerShell command will export the contents of the application into a local directory.

Injetar arquivos necessáriosInject required files

Adicione as DLLs de estrutura de suporte de pacote de 32 bits e 64 bits necessárias e arquivos executáveis ao diretório do pacote.Add the required 32-bit and 64-bit Package Support Framework DLL(s) and executable files to the package directory. Use a tabela a seguir como guia, você também desejará incluir correções de tempo de execução conforme necessário.Use the following table as a guide, you'll also want to include any runtime fixes as required. Visite o artigo Package support Framework Runtime fixes docs para obter orientação sobre como usar a estrutura de suporte do pacote para correções de tempo de execução.Visit Package Support Framework Runtime fixes Docs article for guidance on using the Package Support Framework for runtime fixes.

O executável do aplicativo é x64Application executable is x64 O executável do aplicativo é x86Application executable is x86
PSFLauncher64.exePSFLauncher64.exe PSFLauncher32.exePSFLauncher32.exe
PSFRuntime64.dllPSFRuntime64.dll PSFLauncher32.dllPSFLauncher32.dll
PSFRunDll64.exePSFRunDll64.exe PSFRunDll32.exePSFRunDll32.exe

Esses arquivos identificados acima, bem como o config.jsno arquivo, devem ser colocados dentro da raiz do diretório do pacote de aplicativos.These above identified files, as well as the config.json file must be placed within the root of your application package directory. Esses arquivos podem ser encontrados no diretório da estrutura de suporte do pacote instalado dentro do diretório bin .These files can be found within the installed Package Support Framework directory inside of the bin directory.

Atualizar o manifesto do aplicativoUpdate the application's manifest

Abra o manifesto de aplicativos em um editor de texto e, em seguida, defina o atributo executável do elemento de aplicativo como o nome do arquivo executável 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. Se você souber a arquitetura do seu aplicativo de destino, selecione a versão apropriada, PSFLauncher [x64/x86]. exe.If you know the architecture of your target application, select the appropriate version, PSFLauncher[x64/x86].exe. Se for desconhecido, PSFLauncher32.exe funcionará em todos os casos.If unknown, PSFLauncher32.exe will work in all cases.

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

Reempacotar o aplicativoRe-package the application

Empacote novamente o aplicativo usando a ferramenta makeappx.Re-package the application using the makeappx tool. Consulte o exemplo a seguir de como empacotar e assinar o aplicativo usando o 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