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.
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). Aplicativos da Plataforma Universal do Windows (UWP) 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 de 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 projeto de aplicativo, além de um projeto adicional 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 Projeto de Empacotamento de Aplicativos do Windows 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 Propriedades do Visual Studio (não nas propriedades do projeto), para a propriedade Nível de Confiança , escolha o valor da Confiança Parcial.
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 projeto de aplicativo do Windows (aplicativo do tipo WndProc do C++ Win32) para AppContainer
Esta seção é para você se você tiver um projeto do tipo WndProc do C++ Win32 que foi criado com o modelo de projeto do Projeto de Aplicativo do Windows . A primeira etapa, em poucas palavras, é adicionar à sua solução um Projeto de Empacotamento de Aplicativos do Windows C++. Há mais detalhes sobre as etapas exatas em Configurar seu aplicativo de á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 do WPF (Windows Presentation Foundation) criado com o modelo de projeto de aplicativo WPF em C#. Isso lhe dará um projeto .NET; e é diferente do modelo de projeto chamado Aplicativo WPF (.NET Framework). Ou
- um projeto de aplicativo do Windows Forms (WinForms) criado com o modelo de projeto de aplicativo do Windows Forms em C#. Isso lhe dará um projeto .NET; e é diferente do modelo de projeto chamado Aplicativo windows forms (.NET Framework).
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 Configurar seu aplicativo de área de trabalho para empacotamento MSIX no Visual Studio.
Em seguida, expanda o nó Dependências>Aplicativos do projeto de empacotamento e selecione o nó que representa a referência ao seu projeto WPF ou WinForms. Em seguida, na janela Propriedades do Visual Studio (não nas propriedades do projeto), para a propriedade Nível de Confiança , escolha o valor da Confiança Parcial.
Tópicos relacionados
- 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
- WPF (Windows Presentation Foundation)
- Windows Forms (WinForms)
- Configure seu aplicativo de desktop para pacote MSIX no Visual Studio