Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O tópico AppContainer para aplicativos herdados cobre todas as informações básicas necessárias sobre o que é 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 sendo executado 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). Os aplicativos da Plataforma Universal do Windows (UWP) são automaticamente aplicativos AppContainer. Mas você também pode configurar seu aplicativo de área de trabalho empacotado com MSIX para ser um aplicativo AppContainer.
O processo de uma aplicação AppContainer e os seus processos filho são executados dentro de um contentor de aplicação leve, onde podem aceder apenas aos recursos que lhes são especificamente concedidos. E são isolados através 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 maliciosas fora dos recursos atribuídos limitados.
Sugestão
Os 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 desktop 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 configuração para um pacote de confiança total (ou seja, nível de integridade médio). As secções relevantes têm o seguinte aspeto:
...
<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 capacidade restrita (mas manter o elemento Capabilities ). Assim:
...
<Applications>
<Application ...
EntryPoint="windows.partialTrustApplication">
...
</Application>
</Applications>
<Capabilities/>
...
Se o seu 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). Assim:
<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 de aplicação
- uap10 foi introduzido no Windows 10, versão 2004 (10.0; Compilação 19041)
- Tipos de aplicação de ambiente 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 este é o padrão para novos projetos WinUI 3. Para obter mais informações, consulte Empacotar seu aplicativo usando MSIX de projeto único.
Mas poderás ter um projeto WinUI 3 que remonta a datas anteriores à 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ê pode migrar seu projeto para MSIX de projeto único, então isso é ideal. E você poderá seguir as orientações da seção anterior. Para obter mais informações, consulte Empacotar seu aplicativo usando MSIX de projeto único.
Se você não puder migrar seu projeto para 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 no Package.appxmanifest. O projeto se comporta como se houvesse uma propriedade TrustLevel no arquivo de projeto definida como um valor de Full.
Para corrigir esse valor de propriedade implícito, expanda o nó Dependencies>Applications 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 propriedades do projeto), para a propriedade Nível de Confiança , escolha o valor de Confiança Parcial.
O arquivo de projeto para o projeto de empacotamento agora contém esta propriedade explícita:
...
<ItemGroup>
<ProjectReference Include="...">
<TrustLevel>Partial</TrustLevel>
</ProjectReference>
</ItemGroup>
...
Agora, podes remover <rescap:Capability Name="runFullTrust" /> do ficheiro do projeto de empacotamento Package.appxmanifest.
Configurar um projeto de aplicativo do Windows (aplicativo do tipo C++ Win32 WndProc) para AppContainer
Esta seção é para você se você tiver um projeto do tipo C++ Win32 WndProc que foi criado com o modelo de projeto Windows Application Project . O primeiro passo, 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. Esse tópico se aplica a aplicativos de á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 da seguinte forma:
...
<ItemGroup>
<ProjectReference Include="...">
<TrustLevel>Partial</TrustLevel>
</ProjectReference>
</ItemGroup>
...
Quando você compila, você pode ver o erro "erro APPX1673: manifesto do aplicativo está faltando elemento obrigatório 'PhoneIdentity'". Se isso acontecer, edite o arquivo do Package.appxmanifest projeto da seguinte forma:
<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 secção destina-se a si se tiver uma das seguintes opções:
- um projeto de aplicativo do Windows Presentation Foundation (WPF) que foi criado com o modelo de projeto Aplicativo WPF em C#. Isso lhe dará um projeto .NET; e é diferente do modelo de projeto chamado WPF App (.NET Framework). Ou
- um projeto de aplicativo Windows Forms (WinForms) que foi criado com o modelo de projeto C# Windows Forms App . Isso lhe dará um projeto .NET; e é diferente do modelo de projeto chamado Windows Forms App (.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ó 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 Propriedades do Visual Studio (não propriedades do projeto), para a propriedade Nível de Confiança , escolha o valor de Confiança Parcial.
Tópicos relacionados
- AppContainer para aplicativos herdados
- Criar um novo projeto para uma aplicação de desktop WinUI 3 em C# ou C++ empacotada
- Elemento de aplicação
- uap10 foi introduzido no Windows 10, versão 2004 (10.0; Compilação 19041)
- Tipos de aplicação de ambiente de trabalho
- Embalar o seu aplicativo usando MSIX num único projeto
- Windows Presentation Foundation (WPF)
- Windows Forms (WinForms)
- Configurar o seu aplicativo de ambiente de trabalho para pacote MSIX no Visual Studio