Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Investigação
Alguns inicializadores de aplicativos do Windows no menu iniciar exigem que o uso de parâmetros seja passado para o executável ao iniciar o aplicativo do Windows. Para fazer isso, primeiro precisaremos identificar o inicializador que exige o parâmetro antes de integrar o Aplicativo Windows ao Package Support Framework.
Identificando o requisito de parâmetro do inicializador de aplicativos do Windows
Instale seu aplicativo do Windows em um computador de teste.
Abra o Menu Iniciar do Windows.
Localize e selecione o inicializador de aplicativos do Windows no Menu Iniciar.
Se o aplicativo for iniciado, você não terá problemas (teste todos os inicializadores de aplicativos do Windows associados no Menu Iniciar).
Desinstale o aplicativo windows do computador de teste.
Usando a mídia de instalação do Win32, instale o aplicativo no computador de teste.
Abra o Menu Iniciar do Windows.
Localize e clique com o botão direito do mouse em seu aplicativo do Windows de dentro do Menu Iniciar.
Selecione Mais>>Abrir Local do Arquivo no menu suspenso.
Clique com o botão direito do mouse no primeiro atalho de aplicativo associado (repita as próximas três etapas para todos os atalhos de aplicativo associados).
Selecione Propriedades no menu suspenso.
Examine o valor na caixa de texto à direita de Destino. Após o caminho do arquivo de aplicativo, se houver um parâmetro listado, este aplicativo
Registre o valor do parâmetro para uso futuro.
Resolução
Os aplicativos do Windows redirecionarão diretórios específicos relacionados ao aplicativo para a C:\Program Files\WindowsApps pasta. Se um aplicativo tentar gravar no contêiner do aplicativo do Windows, um erro será disparado e a gravação falhará.
Para resolver o problema relacionado à falha de gravação do aplicativo Windows no contêiner do aplicativo Windows, devemos seguir as quatro etapas a seguir:
- Configurar o aplicativo do Windows em um diretório local
- Criar o Config.json e injetar arquivos PSF necessários
- Atualizar o arquivo AppxManifest do aplicativo Windows
- Reempacotar e assinar o aplicativo do Windows
As etapas acima fornecem orientação extraindo o conteúdo do aplicativo Windows para um diretório local preparado, injetando os arquivos de correção PSF no diretório de aplicativo do Windows preparado, configurando o Inicializador de Aplicativos para apontar para o inicializador PSF e, em seguida, ajustando o arquivo config.json do PSF para redirecionar o inicializador PSF para o aplicativo, especificando o diretório de trabalho.
Baixar e instalar as ferramentas necessárias
Esse processo orientará você na recuperação e no uso das seguintes ferramentas:
- Ferramenta de Cliente do NuGet
- Estrutura de Suporte ao Pacote
- SDK do Windows 10 (versão mais recente)
- Monitor de Processo do SysInternals
A seguir, fornecerá orientações passo a passo sobre como baixar e instalar as ferramentas necessárias.
Baixe a versão mais recente (não prévia) da ferramenta de cliente do NuGet e salve o nuget.exe na
C:\PSF\nugetpasta.Baixe o Package Support Framework usando o Nuget executando o seguinte em uma janela administrativa do PowerShell:
Set-Location "C:\PSF" .\nuget\nuget.exe install Microsoft.PackageSupportFrameworkBaixe e instale o Kit de Ferramentas de Desenvolvimento de Software do Windows 10 (SDK do Win 10).
- Baixe o SDK do Win 10.
- Execute o winsdksetup.exe que foi baixado na etapa anterior.
- Selecione o botão Avançar.
- Selecione apenas os três recursos a seguir para instalação:
- Ferramentas de Assinatura do SDK do Windows para Aplicativos da Área de Trabalho
- SDK do Windows para aplicativos C++ UWP
- SDK do Windwos para localização de aplicativos UWP
- Selecione o botão Instalar.
- Selecione o botão OK.
Prepare o aplicativo do Windows
Ao preparar o aplicativo do Windows, extrairemos/desempacotaremos o conteúdo do aplicativo Windows para um diretório local. Depois que o aplicativo do Windows for desempacotado na localização de preparo, os arquivos de correção do PSF poderão ser injetados para corrigir experiências indesejadas.
Abra uma janela administrativa do PowerShell.
Defina as seguintes variáveis direcionadas ao arquivo de aplicativo específico e à versão do SDK do 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 SDKDesempacote o aplicativo Windows para a pasta de preparo executando o seguinte cmdlet do PowerShell:
## 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"
Criar e injetar arquivos PSF necessários
Para aplicar ações corretivas ao aplicativo windows, um arquivo config.json deve ser criado e fornecido com informações sobre o inicializador de aplicativos do Windows que está falhando. Se houver vários inicializadores de aplicativos do Windows com problemas, o arquivo config.json poderá ser atualizado com várias entradas.
Depois de atualizar o arquivo config.json , o arquivo config.json e os arquivos de correção PSF de suporte devem ser movidos para a raiz do pacote de aplicativos do Windows.
Abra o Vs Code (Visual Studio Code) ou qualquer outro editor de texto.
Crie um novo arquivo selecionando o menu Arquivo na parte superior do VS Code e depois escolhendo Novo Arquivo no menu suspenso à direita.
Salve o arquivo como config.json ao selecionar o menu Arquivo na parte superior da janela do VS Code e escolher Salvar no menu suspenso. Na janela Salvar como, navegue até o diretório de preparo do aplicativo Windows (C:\PSF\Staging\PSFSampleApp) e defina o Nome do Arquivo como
config.json. Selecione o botão Salvar.Copie o código a seguir para o novo arquivo config.json recém-criado.
{ "applications": [ { "id": "", "executable": "", "arguments": "" } ] }Abra o arquivo AppxManifest do aplicativo Windows em etapas localizado na pasta de preparo de aplicativos do Windows (C:\PSF\Staging\PSFSampleApp\AppxManifest.xml) usando o VS Code ou outro editor de texto.
<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>Defina o
applications.idvalor no config.json como o mesmo valor encontrado no campo Applications.Application.ID do arquivo AppxManifest.xml .
Defina o
applications.executablevalor no config.json para direcionar o caminho relativo para o aplicativo localizado no campo Applications.Application.Executable do arquivo AppxManifest.xml .
Defina o
applications.argumentsvalor no config.json para corresponder ao argumento usado para iniciar o aplicativo. Confira o valor registrado na etapa final das diretrizes Investigação – Identificação da necessidade de parâmetro do inicializador de aplicativos do Windows.Defina o valor
applications.workingdirectoryno config.json para direcionar o caminho relativo da pasta encontrado no campo Applications.Application.Executable do arquivo AppxManifest.xml.
Salve o arquivo config.json atualizado.
{ "applications": [ { "id": "PSFSample", "executable": "VFS/ProgramFilesX64/PS Sample App/PSFSample.exe", "arguments": "/bootfromsettingshortcut" } ] }Copie os seguintes quatro arquivos do Package Support Framework com base na arquitetura executável do aplicativo para a raiz do aplicativo Windows em etapa de execução. Os arquivos a seguir estão localizados no .\Microsoft.PackageSupportFramework.<Version>\bin.
Aplicativo (x64) Aplicativo (x86) PSFLauncher64.exe PSFLauncher32.exe PSFRuntime64.dll PSFRuntime32.dll PSFRunDll64.exe PSFRunDll32.exe
Atualizar AppxManifest
Depois de criar e atualizar o arquivo config.json , o AppxManifest.xml do aplicativo Windows deve ser atualizado para cada inicializador de aplicativos do Windows que foi incluído no config.json. Os Aplicativos do AppxManifest agora devem ter como destino os PSFLauncher.exe associados à arquitetura de aplicativos.
Abra o Explorador de Arquivos e navegue até a pasta de aplicativo MSIX em etapas (C:\PSF\Staging\PSFSampleApp).
Clique com o botão direito do mouse em AppxManifest.xml e selecione Abrir com o Code no menu suspenso (opcionalmente, você pode abrir com outro editor de texto).
Atualize o arquivo AppxManifest.xml com as seguintes informações:
<Package ...> ... <Applications> <Application Id="PSFSample" Executable="PSFLauncher32.exe" EntryPoint="Windows.FullTrustApplication"> ... </Application> </Applications> </Package>
Empacotar novamente o aplicativo
Todas as correções foram aplicadas, agora o aplicativo Windows pode ser empacotado novamente em um MSIX e assinado usando um certificado de assinatura de código.
Abra uma janela administrativa do PowerShell.
Defina as seguintes variáveis:
$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 SDKReempacote o aplicativo Windows da pasta de preparo executando o seguinte cmdlet do PowerShell:
Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture" .\makeappx.exe pack /p "$AppPath" /d "$StagingFolder"Assine o aplicativo windows executando o seguinte cmdlet do PowerShell:
Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture" .\signtool.exe sign /v /fd sha256 /f $CodeSigningCert /p $CodeSigningPass $AppPath