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.
Importante
Para qualquer processo em execução no AppContainer, se você fizer com que DeploymentManager.Initialize seja chamado, seu aplicativo precisará declarar a packageManagementfuncionalidade restrita no manifesto do pacote. Para obter mais detalhes, consulte o inicializador automático do Gerenciador de Implantação.
O tópico AppContainer para aplicativos herdados aborda todas as informações em segundo plano necessárias sobre o ambiente AppContainer e seus benefícios; esse tópico também contém exemplos de código C# e C++ para testar se um processo está ou não em execução dentro de um AppContainer.
O tópico que você está lendo agora mostra como você pode pegar um aplicativo empacotado usando MSIX e configurá-lo facilmente para ser executado no ambiente AppContainer (em um contêiner de aplicativo leve). Plataforma Universal do Windows (UWP) aplicativos são automaticamente aplicativos AppContainer. Você também pode configurar seu aplicativo para desktop, empacotado com MSIX, para ser um aplicativo AppContainer.
O processo de um aplicativo AppContainer e seus processos filho são executados dentro de um contêiner de aplicativo leve, onde podem acessar apenas os recursos que são especificamente concedidos a eles. E eles são isolados por meio da virtualização do sistema de arquivos e do Registro. Como resultado, os aplicativos implementados em um AppContainer não podem ser hackeados para permitir ações mal-intencionadas fora dos recursos atribuídos limitados.
Dica
Aplicativos não empacotados também podem ser executados em um AppContainer. Mas é particularmente fácil usar o AppContainer se você empacotar usando MSIX. Portanto, todos os cenários descritos neste tópico são sobre aplicativos empacotados.
Configurar um projeto WinUI 3 para AppContainer
As etapas em Criar um novo projeto para um aplicativo de área de trabalho C# ou C++ WinUI 3 empacotado mostram a maneira padrão e recomendada de criar um novo projeto WinUI 3.
Por padrão, o arquivo do Package.appxmanifest projeto contém a configuração de um pacote de confiança total (ou seja, nível de integridade médio). As seções relevantes são semelhantes a esta:
...
<Applications>
<Application ...
EntryPoint="$targetentrypoint$">
...
</Application>
</Applications>
<Capabilities>
<rescap:Capability Name="runFullTrust" />
</Capabilities>
...
Para configurar o pacote como contendo um aplicativo AppContainer, você pode editar o atributo EntryPoint e remover a declaração de funcionalidade restrita (mas manter o elemento Capabilities ). Dessa forma:
...
<Applications>
<Application ...
EntryPoint="windows.partialTrustApplication">
...
</Application>
</Applications>
<Capabilities/>
...
Se o pacote for instalado no Windows 10, versão 2004 (10.0; Build 19041) e/ou posterior, em vez de definir EntryPoint você pode definir uap10:TrustLevel e uap10:RuntimeBehavior (depois de declarar o prefixo do namespace XML, conforme mostrado). Dessa forma:
<Package ...
xmlns:uap10="http://schemas.microsoft.com/appx/manifest/uap/windows10/10"
...>
...
<Applications>
<Application ...
EntryPoint="$targetentrypoint$"
uap10:TrustLevel="appContainer"
uap10:RuntimeBehavior="packagedClassicApp">
...
</Application>
</Applications>
<Capabilities/>
...
Para obter mais informações, consulte estes tópicos:
- Elemento Aplicação
- uap10 foi introduzido no Windows 10, versão 2004 (10.0; Build 19041)
- Tipos de programa de área de trabalho
Configurar uma solução de dois projetos WinUI 3 para AppContainer
A seção anterior descreveu o processo para MSIX de projeto único, que recomendamos e que é o padrão para novos projetos WinUI 3. Para obter mais informações, consulte Empacotar seu aplicativo usando o MSIX de projeto único.
Mas você pode ter um projeto WinUI 3 que data de antes da introdução do recurso MSIX de projeto único. Nesse caso, você terá dois projetos em sua solução: seu aplicativo, além de mais um Projeto de Empacotamento de Aplicativos do Windows. Se você puder migrar seu projeto para o MSIX de projeto único, esse é o ideal. E você poderá seguir as diretrizes na seção anterior. Para obter mais informações, consulte Empacotar seu aplicativo usando o MSIX de projeto único.
Se você não puder migrar seu projeto para o MSIX de projeto único, esta seção descreve como configurar seu pacote como contendo um aplicativo AppContainer.
Um Windows Application Packaging Project implica uma configuração padrão que substitui a configuração em Package.appxmanifest. O projeto se comporta como se houvesse uma propriedade TrustLevel no arquivo de projeto definida com o valor Full.
Para corrigir esse valor de propriedade implícito, expanda o nó Dependências>Aplicativos do projeto de empacotamento e selecione o nó que representa a referência ao seu projeto WinUI 3. Em seguida, na janela Properties do Visual Studio (não propriedades do projeto), para a propriedade Trust Level escolha o valor de Partial Trust.
O arquivo de projeto do projeto de empacotamento agora contém esta propriedade explícita:
...
<ItemGroup>
<ProjectReference Include="...">
<TrustLevel>Partial</TrustLevel>
</ProjectReference>
</ItemGroup>
...
E agora você pode remover <rescap:Capability Name="runFullTrust" /> do arquivo Package.appxmanifest do projeto de empacotamento.
Configurar um aplicativo Windows Project (aplicativo do tipo WndProc do C++ Win32) para AppContainer
Esta seção é para você se tiver um projeto do tipo WndProc do C++ Win32 que foi criado com o modelo de projeto Windows Application Project. A primeira etapa, em poucas palavras, é adicionar à sua solução um Projeto de Empacotamento de Aplicativos do Windows em C++. Há mais detalhes sobre as etapas exatas em Configura seu aplicativo da área de trabalho para empacotamento MSIX no Visual Studio. Esse tópico se aplica a aplicativos da área de trabalho escritos em C++ ou C#.
Em seguida, abra o arquivo de projeto do novo projeto de empacotamento e adicione uma propriedade TrustLevel à propriedade ProjectReference existente como esta:
...
<ItemGroup>
<ProjectReference Include="...">
<TrustLevel>Partial</TrustLevel>
</ProjectReference>
</ItemGroup>
...
Ao compilar, você poderá ver o erro "erro APPX1673: o manifesto do aplicativo está sem o elemento necessário 'PhoneIdentity'". Se isso acontecer, edite o arquivo do Package.appxmanifest projeto da seguinte maneira:
<Package ...
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
...>
...
<mp:PhoneIdentity
PhoneProductId="A GUID in the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx."
PhonePublisherId="A GUID in the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.">
</mp:PhoneIdentity>
...
Configurar um projeto WPF ou WinForms para AppContainer
Esta seção será para você se você tiver:
- um projeto de aplicativo Windows Presentation Foundation (WPF) criado com o modelo de projeto WPF Application C#. Isso lhe dará um projeto de .NET; e é diferente do modelo de projeto chamado WPF App (.NET Framework). Ou
- um projeto de aplicativo Windows Forms (WinForms) criado com o modelo de projeto Windows Forms App C#. Isso lhe dará um projeto .NET; e ele é diferente do modelo de projeto chamado Windows Forms App (.NET Framework).
A primeira etapa é adicionar à sua solução um Projeto de Empacotamento de Aplicativos Windows. Há mais detalhes sobre as etapas exatas em Configurar seu aplicativo de desktop para empacotamento MSIX em Visual Studio.
Em seguida, expanda o nó Dependencies>Applications do projeto de empacotamento, e selecione o nó que representa a referência ao seu projeto WPF ou WinForms. Em seguida, na janela Properties do Visual Studio (não propriedades do projeto), para a propriedade Trust Level escolha o valor de Partial Trust.
Tópicos relacionados
- Visão geral da contêinerização msix
- AppContainer para aplicativos herdados
- Criar um projeto para um programa de área de trabalho WinUI 3 C# ou C++ empacotado
- Elemento Aplicação
- uap10 foi introduzido no Windows 10, versão 2004 (10.0; Build 19041)
- Tipos de programa de área de trabalho
- Empacotar seu aplicativo usando projeto único MSIX
- Windows Presentation Foundation (WPF)
- Windows Forms (WinForms)
- Configure seu aplicativo de desktop para empacotamento MSIX no Visual Studio