Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Investigação
Alguns inicializadores de aplicativos do Windows no menu Iniciar exigem o uso de parâmetros a serem passados para o executável ao iniciar o aplicativo do Windows. Para fazer isso, primeiro precisaremos identificar o iniciador que requer o parâmetro antes de integrar o Aplicativo do Windows com a Estrutura de Suporte a Pacotes.
Identificando o requisito de parâmetro do inicializador de aplicativos do Windows
Instale seu aplicativo do Windows em uma máquina 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 do Windows da máquina de teste.
Usando a mídia de instalação do Win32, instale o aplicativo em sua máquina de teste.
Abra o Menu Iniciar do Windows.
Localize e clique com o botão direito do rato na sua aplicação Windows a partir do Menu Iniciar.
Selecione Mais>>Abrir Localização do Ficheiro 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 de opções.
Revise o valor na caixa de texto à direita de Destino. Após o caminho do arquivo do aplicativo, se houver um parâmetro listado, esta aplicação
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 de aplicativos do Windows, um erro será acionado e a gravação falhará.
Para resolver o problema relacionado à falha do aplicativo do Windows ao não conseguir gravar no contentor do aplicativo do Windows, devemos seguir as quatro etapas a seguir:
- Dispor a aplicação do Windows num diretório local
- Crie o Config.json e injete os arquivos PSF necessários
- Atualizar o arquivo AppxManifest do aplicativo do Windows
- Reempacotar e assinar o aplicativo do Windows
As etapas acima fornecem orientação para extrair o conteúdo da aplicação Windows para um diretório local preparado, injetar os arquivos de correção do PSF no diretório preparado da aplicação Windows, configurar o Iniciador de Aplicações para apontar para o iniciador PSF e, em seguida, configurar o arquivo config.json do PSF para redirecionar o iniciador PSF para a aplicação, especificando o diretório de trabalho.
Baixe e instale as ferramentas necessárias
Este processo irá guiá-lo através da recuperação e utilização das seguintes ferramentas:
- Ferramenta de cliente NuGet
- Estrutura de Suporte a Pacotes
- SDK do Windows 10 (versão mais recente)
- Monitor de Processos SysInternals
O seguinte fornecerá orientação passo a passo sobre como baixar e instalar as ferramentas necessárias.
Baixe a versão mais recente (não visualizada) da ferramenta de cliente NuGet e salve o nuget.exe na
C:\PSF\nuget
pasta.Baixe a Estrutura de Suporte a Pacotes usando o Nuget executando o seguinte em uma janela do PowerShell Administrativo:
Set-Location "C:\PSF" .\nuget\nuget.exe install Microsoft.PackageSupportFramework
Transfira e instale o Kit de Ferramentas de Desenvolvimento de Software do Windows 10 (Win 10 SDK).
- Faça o download do 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 UWP C++
- SDK do Windwos para localização de aplicativos UWP
- Selecione o botão Instalar.
- Selecione o botão Ok.
Configurar a aplicação do Windows
Ao preparar o aplicativo do Windows, estaremos extraindo/desempacotando o conteúdo do aplicativo do Windows para um diretório local. Uma vez que o aplicativo do Windows tenha sido descompactado para o local de preparação, os arquivos de correção PSF podem ser injetados corrigindo quaisquer experiências indesejadas.
Abra uma janela do PowerShell administrativo.
Defina as seguintes variáveis direcionadas ao seu 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 SDK
Descompacte o aplicativo do 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 do 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 Visual Studio Code (VS Code) ou qualquer outro editor de texto.
Crie um novo ficheiro, selecionando o menu Ficheiro na parte superior do VS Code, selecionando Novo Ficheiro no menu suspenso.
Salve o arquivo como config.json, selecionando o menu Arquivo na parte superior da janela VS Code, selecionando 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 ficheiro config.json.
{ "applications": [ { "id": "", "executable": "", "arguments": "" } ] }
Abra o arquivo AppxManifest do aplicativo Windows em estágios localizado na pasta de preparo do aplicativo 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.id
valor no config.json como sendo o mesmo valor encontrado no campo Applications.Application.ID do arquivo AppxManifest.xml .Defina o
applications.executable
valor no config.json para direcionar o caminho relativo para o aplicativo localizado no campo Applications.Application.Executable do arquivo AppxManifest.xml .Defina o
applications.arguments
valor no config.json para corresponder ao argumento usado para iniciar o aplicativo. Consulte o valor gravado na etapa final da Investigação - Identificação do requisito de parâmetro do inicializador de aplicativos do Windows.Defina o valor de
applications.workingdirectory
no config.json para direcionar o caminho da pasta relativa 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 quatro ficheiros seguintes do Package Support Framework, de acordo com a arquitetura executável da aplicação, para a raiz do aplicativo Windows em preparação. Os seguintes arquivos estão localizados dentro do .\Microsoft.PackageSupportFramework.<Versão>\bin.
Aplicação (x64) Aplicação (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 do Windows deve ser atualizado para cada inicializador de aplicativos do Windows incluído no config.json. Os aplicativos do AppxManifest agora devem ter como alvo o PSFLauncher.exe associado à arquitetura de aplicativos.
Abra o Explorador de Arquivos e navegue até a pasta Aplicativo MSIX em estágios (C:\PSF\Staging\PSFSampleApp).
Clique com o botão direito do rato em AppxManifest.xml e selecione Abrir com o Code no menu suspenso (Opcionalmente, 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>
Reempacotar o aplicativo
Todas as correções foram aplicadas, agora o aplicativo do Windows pode ser reempacotado 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 SDK
Reempacote a aplicação para Windows da pasta de preparação 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 do 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