Share via


Aplicativos do Windows: pacote, implantação e processo

Observação

Algumas informações relacionam-se ao produto de pré-lançamento, o qual poderá ser substancialmente modificado antes do lançamento comercial. A Microsoft não oferece nenhuma garantia, explícita ou implícita, quanto às informações fornecidas aqui.

Este tópico discute suas opções com relação a:

  • Se seu aplicativo será ou não empacotado.
  • Como você implantará/distribuirá seu aplicativo e como ele será instalado.
  • O processo de tempo de execução do seu aplicativo, como ele será isolado; e quais APIs estarão disponíveis para ele.

Você deve tomar essas decisões tanto para novos aplicativos quanto para os existentes. Mas se você ainda estiver na fase de planejamento de um novo aplicativo, antes de começar a pensar nas considerações acima, primeiro decida por qual plataforma de desenvolvimento e estrutura de interface do usuário (UI) você utilizará no seu aplicativo. E para essa decisão, consulte Uma visão geral das opções de desenvolvimento do Windows.

Empacotado ou não empacotado

A decisão de tornar o seu aplicativo empacotado ou não empacotado é determinada primeiro por um conceito conhecido como identificador de pacote, que descreveremos nesta seção. Se você não precisar disso, a decisão se resumirá à experiência desejada do instalador para você e para seus usuários. Vamos nos aprofundar nos detalhes desses aspectos.

Muitos recursos de extensibilidade do Windows, incluindo tarefas em segundo plano, notificações, blocos dinâmicos, extensões personalizadas de menu de contexto e destinos de compartilhamento, podem ser utilizados por um aplicativo somente se esse aplicativo tiver o identificador de pacote no runtime. Isso ocorre porque o SO (sistema operacional) precisa identificar o chamador da API correspondente. Consulte Recursos que exigem a identidade do pacote.

  • Se você precisar utilizar qualquer um desses recursos, então seu aplicativo precisará de um identificador de pacote. E, portanto, ele precisa ser um aplicativo empacotado (os aplicativos empacotados são a única variante que tem o identificador de pacote). Um aplicativo empacotado é empacotado usando a tecnologia MSIX (confira O que é o MSIX?).
    • Para um novo aplicativo, o processo de empacotamento é direto (e no final desta seção existem informações sobre como fazer isso).
    • Para alguns aplicativos existentes, você pode seguir o mesmo processo de empacotamento de um novo aplicativo. Mas como alguns aplicativos existentes ainda não estão prontos para que todo o seu conteúdo esteja presente em um pacote MSIX, existe a opção de que seu aplicativo seja empacotado com local externo. Isso permite que seu aplicativo tenha o identificador de pacote; sendo assim capaz de usar esses recursos que exigem isso. Para obter mais informações, consulte Conceder o identificador de pacote por meio do empacotamento com local externo.
  • Mesmo que você não precise utilizar nenhum desses recursos, a criação de um aplicativo empacotado ainda é uma boa ideia. Ele fornece aos seus usuários a maneira mais fácil de instalar, desinstalar e atualizar seu aplicativo. Para obter mais informações, consulte Implantação/distribuição/instalação neste tópico.
  • Mas a criação de um aplicativo não empacotado é uma opção.

A conclusão é que os aplicativos empacotados são a única variante que tem um identificador de pacote (e eles têm a melhor experiência de instalação). Um aplicativo não empacotado não tem o identificador de pacote; portanto, ele não pode utilizar as APIs/recursos mencionados acima.

Para obter mais detalhes sobre empacotado versus não empacotado, consulte Visão geral da implantação; em particular, a seção Vantagens e desvantagens do empacotamento seu aplicativo nesse tópico. Esse tópico também menciona a opção empacotado com local externo.

Para obter informações sobre como configurar seu aplicativo como empacotado ou não empacotado:

Consulte também a seção Gerenciador de Pacotes do Windows e o cliente WinGet neste tópico.

Implantação/distribuição/instalação

  • Um aplicativo empacotado é empacotado utilizando a tecnologia MSIX.
  • Um aplicativo não empacotado não envolve o MSIX de forma alguma.

Então, por que é importante que seu aplicativo seja ou não um empacotado?

  • Bem como, o MSIX dá a seus usuários uma maneira fácil de instalar, desinstalar e atualizar seu aplicativo. A desinstalação é limpa: quando seu aplicativo é desinstalado, o sistema é restaurado para o mesmo estado em que estava antes da instalação; nenhum artefato é deixado para trás.
  • Esse tipo de aplicativo também dá suporte a atualizações incrementais e automáticas.
  • A Microsoft Store é otimizada para aplicativos desse tipo (embora eles possam ser utilizados dentro ou fora da Store).
  • É um caminho fácil para ser utilizado via anexação do aplicativo MSIX (para máquinas virtuais da Área de Trabalho Virtual do Azure). Para obter mais informações, consulte O que é o aplicativo MSIX anexado?.
  • Um pacote conectado se beneficia de uma forte proteção contra adulteração. Esse benefício é ainda maior do que o de um aplicativo não empacotado instalado em Arquivos de Programas.

Consulte também a seção Gerenciador de Pacotes do Windows e o cliente WinGet neste tópico.

AppContainer ou Nível de Integridade Médio

A opção de executar seu aplicativo em um AppContainer, ou não, é uma questão de segurança. O processo de um aplicativo AppContainer e seus processos filhos são executados dentro de um contêiner de aplicativo leve, em que podem acessar apenas os recursos que lhes são especificamente concedidos. E eles são isolados utilizando a virtualização do sistema de arquivos e do registro. Como resultado, os aplicativos implementados em um AppContainer não podem ser invadidos para permitir ações mal-intencionadas fora dos recursos limitados atribuídos.

Aplicativos empacotados ou não empacotados podem ser configurados para serem executados em um AppContainer. Mas o processo é mais simples para os aplicativos empacotados. Se um aplicativo não for um aplicativo AppContainer, ele será um aplicativo Nível de Integridade Médio.

Para obter mais informações, consulte AppContainer para aplicativos herdados e aplicativos AppContainer MSIX.

Para obter informações sobre como configurar seu aplicativo para ser executado em um AppContainer ou Nível de Integridade Médio:

  • Aplicativos WinUI 3 (SDK do Aplicativo Windows). Consulte o atributo de manifesto do pacote do aplicativo uap10:TrustLevel em Configurar um projeto WinUI 3 para o AppContainer.
  • Aplicativos de área de trabalho. Consulte a Propriedade TrustLevel do projeto Visual Studio em aplicativos AppContainer MSIX (na seção apropriada para seu aplicativo).
  • Aplicativos da Plataforma Universal do Windows (UWP). Os aplicativos UWP já estão configurados para serem executados em um AppContainer, e essa configuração não pode ser alterada.

Lembre-se de que os aplicativos não empacotados não têm um manifesto do pacote de aplicativos. Portanto, para aplicativos não empacotados, você deve declarar sua decisão AppContainer-or-Medium-IL no seu arquivo do projeto, em vez de em um manifesto de pacote do aplicativo.

Isolamento de aplicativos Win32

Importante

O recurso descrito nesta seção está disponível nas versões de pré-versão do Windows Insider Preview.

O isolamento de aplicativos Win32 é um recurso de segurança futuro do Windows que, no caso de um aplicativo ser comprometido, ajuda a conter os danos e a proteger as escolhas de privacidade do usuário. Esse recurso é criado com base em AppContainers e componentes que virtualizam recursos e fornecem acesso agenciado a outros recursos. Para obter a documentação e a ferramentas para ajudar você a isolar seus aplicativos, consulte Bem-vindo(a) ao repositório de isolamento do aplicativo Win32.

Funcionalidades do aplicativo

As funcionalidades do aplicativo (por exemplo, internetClient, localização, microfone e bluetooth) são relevantes principalmente para aplicativos empacotados executados em um AppContainer. Portanto, isso inclui todos aplicativos da Plataforma Universal do Windows (UWP) e alguns aplicativos de desktop.

Mas existem alguns cenários em que até mesmo um aplicativo de Nível de Integridade Médio (ou seja, não um aplicativo AppContainer) deve declarar uma funcionalidade. Um exemplo é a funcionalidade restrita runFullTrust.

Para obter mais detalhes sobre as funcionalidades do aplicativo, a quais variantes de aplicativos elas se aplicam e como fazê-las para configurá-las, consulte Declarações de funcionalidades do aplicativo. Você configura as funcionalidades no manifesto do pacote do aplicativo, e é por isso que elas se aplicam apenas a aplicativos empacotados.

Meus Aplicativos

Os aplicativos para desktop e os aplicativos da Plataforma Universal do Windows (UWP) são os dois principais tipos de aplicativos, embora existam várias variantes na família aplicativos para desktop. A escolha de uma estrutura de interface do usuário (UI), WinForms, WPF, Win32, Direct 2D/3D, UWP ou WinUI 3, é uma opção que, até certo ponto, independe das configurações descritas neste tópico.

Mas vamos dar uma olhada em como esses tipos de aplicativos podem ser diferentes uns dos outros em termos de empacotamento, implantação e processo.

Em primeiro lugar, todos os aplicativos UWP são empacotados e executados em um AppContainer. Mas para aplicativos de desktop, as coisas são mais flexíveis. Você pode optar por empacotar seu aplicativo para desktop ou não. E, independentemente dessa decisão, você pode optar por configurar seu aplicativo de desktop como um AppContainer ou um aplicativo de Nível de Integridade Médio.

Empacotados Desempacotado
AppContainer Aplicativos da área de trabalho
Aplicativos UWP
Aplicativos da área de trabalho
Nível de Integridade Médio Aplicativos da área de trabalho Aplicativos da área de trabalho

Para aplicativos empacotados, para configurar a variante do aplicativo desejada, utilize o atributo uap10:RuntimeBehavior no manifesto do pacote do aplicativo (consulte Aplicativo (Windows 10)).

  • Aplicativos de desktop são aplicativos do Windows .exe, normalmente com uma função de ponto de entrada principal ou WinMain. Para configurar seu aplicativo como um aplicativo de desktop, defina uap10:RuntimeBehavior como "packagedClassicApp" ou "win32App".
    • O valor "packagedClassicApp" indica um aplicativo WinUI 3 (SDK do Aplicativo Windows) ou um aplicativo de Ponte de Desktop (Centennial). A diferença é que um aplicativo Centennial é executado em um AppContainer.
    • E "win32App" indica qualquer outra variante de aplicativo Win32 (incluindo um aplicativo empacotado com local externo).
  • Por fim, definir uap10:RuntimeBehavior como "windowsApp" dá a você um aplicativo UWP.

Para conhecer todas as opções de variantes de aplicativos que você pode desenvolver, consulte Desenvolvimento de aplicativos do Windows: opções e recursos.

SDK do Aplicativo Windows: dependente de estrutura ou autônomo

Se você estiver desenvolvendo ou mantendo um aplicativo que utiliza o SDK do Aplicativo Windows, então você terá outra decisão a tomar. Porque existem duas maneiras a seguir de implantar o SDK do Aplicativo Windows do qual seu aplicativo depende:

  • Dependente da estrutura (o padrão). Seu aplicativo precisa que o runtime do SDK do Aplicativo Windows e/ou o pacote de Estrutura estejam presentes no computador de destino.
  • Autônomo. Seu aplicativo traz consigo as dependências do SDK do Aplicativo Windows.

Para obter mais informações, consulte Visão geral da implantação do SDK do Aplicativo Windows.

Gerenciador de Pacotes do Windows e o cliente WinGet

Um gerenciador de pacotes pode ajudar seus usuários a instalar/atualizar/configurar seu software automatizando o fluxo de trabalho. Os gerenciadores de pacotes podem ajudar a instalar qualquer software, mas tendem a ser usados principalmente para instalar ferramentas de desenvolvedor. Portanto, se estiver criando uma ferramenta de desenvolvedor, você poderá estar particularmente interessado nessa opção. Veja como funciona:

  • Você, como desenvolvedor de software, define para o gerenciador de pacotes (na forma de instruções declarativas) todas as partes necessárias para uma instalação bem-sucedida do seu produto.
  • E quando um usuário instala seu software, o gerenciador de pacotes segue as instruções declarativas para automatizar o fluxo de trabalho de instalação e configuração.

Os resultados são uma redução do tempo gasto para preparar o ambiente de um usuário e uma melhor compatibilidade entre os componentes instalados. E você pode usar o Gerenciador de Pacotes do Windows para distribuir seus aplicativos empacotados ou não empacotados em formatos como .msix, .msi e .exe.

Para obter mais informações, confira Gerenciador de Pacotes do Windows.