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.
Este tópico discute as suas opções relativas:
- Que opção de embalagem usar para a sua aplicação (embalada, com localização externa ou não embalada)?
- Como vais implementar/distribuir a tua aplicação e como será instalada.
- O processo em tempo de execução da sua aplicação, incluindo o grau de isolamento e as APIs que lhe estarão disponíveis.
Pode tomar essas decisões tanto para aplicações novas como existentes. Mas se ainda estás na fase de planeamento para uma nova aplicação, antes de começares a pensar nas considerações acima, decide primeiro que plataforma de desenvolvimento e framework de interface de utilizador (UI) vais usar para a tua aplicação. E para essa decisão, veja Uma visão geral das opções de desenvolvimento do Windows.
Opções de embalagem: embalado, embalado com localização externa ou não embalado
A decisão sobre qual opção de embalagem usar para a sua aplicação é inicialmente determinada por um conceito conhecido como identidade de embalagem. Muitas funcionalidades de extensibilidade do Windows (tarefas em segundo plano, cenários de notificação push que usam entrega em segundo plano ou ativação COM, extensões personalizadas de menus contextuais e alvos de partilha) só podem ser usadas por uma aplicação se essa aplicação tiver identidade de pacote em tempo de execução, porque o sistema operativo (SO) precisa de ser capaz de identificar o chamador da API correspondente. Só as aplicações embaladas (incluindo as que têm localização externa) têm identidade de pacote.
Para uma explicação completa dos modelos empacotados, empacotados com localização externa e não embalados, e como escolher entre eles, consulte a visão geral de Embalagem. Para as funcionalidades que dependem da identidade do pacote, veja Funcionalidades que requerem identidade de pacote.
Para informações sobre como configurar a sua aplicação como empacotada ou desempacotada:
-
Aplicações WinUI 3 (SDK de Aplicações Windows). Veja a propriedade do projeto do
AppxPackageVisual Studio nas propriedades do Projeto; e veja Crie o seu primeiro projeto WinUI (SDK de Aplicações Windows). - Aplicações de ambiente de trabalho. Veja Configurar a sua aplicação de ambiente de trabalho para a embalagem MSIX.
- Aplicações da Plataforma Universal Windows (UWP). As aplicações UWP já estão configuradas como empacotadas; E essa configuração não pode ser alterada.
Veja também a secção Windows Gestor de Pacotes e o cliente WinGet neste tópico.
Implementação/distribuição/instalação
Uma aplicação empacotada é tanto empacotada como instalada usando MSIX. Se optares por empacotar com localização externa, isso é um modelo de "trazer o teu próprio instalador", por isso continuas a fazer o trabalho de instalador tu próprio (vê Conceder identidade de pacote ao empacotar com localização externa). Uma aplicação não empacotada não envolve MSIX de todo.
A embalagem é importante porque o MSIX oferece aos utilizadores uma experiência limpa de instalação, desinstalação e atualização, suporta atualizações incrementais e automáticas, é otimizado pela Microsoft Store, funciona com o MSIX app attachment para Azure Virtual Desktop e beneficia de forte anti-manipulação quando assinado.
Para orientações sobre implementação e distribuição, consulte a visão geral de Pacote e implementação e Escolha um caminho de distribuição. Veja também a secção Windows Gestor de Pacotes e o cliente WinGet neste tópico.
AppContainer ou Medium IL
A opção de executar a sua aplicação num AppContainer, ou não, é uma questão de segurança. O processo de uma aplicação AppContainer e os seus processos filhos executam-se dentro de um contentor de aplicação leve, onde podem aceder apenas aos recursos que lhes são especificamente atribuídos. 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.
Aplicações empacotadas ou não empacotadas podem ser configuradas para correr num AppContainer. Mas o processo é mais simples para aplicações empacotadas. Se uma app não for AppContainer, então é uma app Medium IL .
Para mais informações, consulte AppContainer para aplicações legadas e aplicações MSIX AppContainer.
Para informações sobre como configurar a sua aplicação para correr num AppContainer ou Medium IL:
-
Aplicações WinUI (SDK de Aplicações Windows). Veja o atributo de manifesto do pacote do aplicativo
uap10:TrustLevelem Configurar um projeto WinUI para AppContainer. -
Aplicações de ambiente de trabalho. Consulte a propriedade
TrustLeveldo projeto do Visual Studio em aplicações MSIX AppContainer (na secção apropriada para o seu tipo de aplicação). - Aplicações da Plataforma Universal Windows (UWP). As aplicações UWP já estão configuradas para correr num AppContainer; E essa configuração não pode ser alterada.
Lembra-te que as apps não embaladas não têm manifesto de pacote de app. Assim, para aplicações não empacotadas, declara-se a sua decisão de AppContainer-or-Medium-IL no ficheiro de projeto em vez de num manifesto de pacote de aplicação.
Isolamento de aplicações Win32
O isolamento de aplicações Win32 é uma funcionalidade de segurança (disponível no Windows 11, versão 24H2 e posteriores) que ajuda a conter danos caso uma aplicação seja comprometida e protege as escolhas de privacidade dos utilizadores. Baseia-se em AppContainers e componentes que virtualizam recursos e fornecem acesso intermediado. Para mais informações, consulte Visão geral do isolamento de aplicações Win32 e o repositório do GitHub sobre o isolamento de aplicações Win32.
Capacidades da aplicação
As capacidades das aplicações (por exemplo, internetClient, localização, microfone e bluetooth) são principalmente relevantes para aplicações empacotadas que correm num AppContainer. Isso inclui aplicações all Plataforma Universal do Windows (UWP) e aplicações algumas para desktop.
Mas há alguns cenários em que até uma aplicação Medium IL (ou seja, não uma app AppContainer) deveria declarar uma capacidade. Um exemplo é a runFullTrust capacidade restrita.
Para mais detalhes sobre as capacidades das aplicações, a que tipos de aplicações se aplicam e como as configurar, consulte Declarações de capacidades da aplicação. Configura capacidades no manifesto do pacote da sua aplicação; e é por isso que se aplicam apenas a aplicações em pacotes.
Tipos de aplicações
As aplicações de ambiente de trabalho e as aplicações Plataforma Universal do Windows (UWP) são os dois principais tipos de aplicações, embora existam vários tipos de aplicações na família de aplicações de ambiente de trabalho. Escolher uma framework de UI (WinForms, WPF, Win32, Direct 2D/3D ou WinUI 3) é, em certa medida, independente das configurações descritas neste tópico.
Mas vamos analisar como esses tipos de aplicações podem diferir entre si em termos de embalagem, implementação e processo.
Antes de mais, todas as aplicações UWP são embaladas e executadas num AppContainer. Mas para aplicações de desktop, as coisas são mais flexíveis. Pode escolher incluir a sua aplicação de ambiente de trabalho ou não. E, independentemente dessa decisão, pode optar por configurar a sua aplicação de ambiente de trabalho como uma AppContainer ou uma aplicação Medium IL.
| Embalado | Unpackaged | |
|---|---|---|
| AppContainer | Aplicações de ambiente de trabalho Aplicativos UWP |
Aplicações de ambiente de trabalho |
| IL Médio | Aplicações de ambiente de trabalho | Aplicações de ambiente de trabalho |
Para aplicações empacotadas, para configurar o tipo de aplicação que pretende, utiliza o atributo uap10:RuntimeBehavior no manifesto do pacote da sua aplicação (ver Application (Windows 10)).
-
As aplicações de ambiente de trabalho são Windows
.exe, normalmente com uma função de entrada principal ou WinMain. Para configurar a sua aplicação como uma aplicação de ambiente de trabalho, definauap10:RuntimeBehaviorpara "packagedClassicApp" ou "win32App".- O valor "packagedClassicApp" indica uma das seguintes opções: uma aplicação WinUI (SDK de Aplicações Windows) ou uma aplicação Desktop Bridge (Centennial). A diferença é que uma aplicação Centennial corre num AppContainer.
- E "win32App" indica qualquer outro tipo de aplicação Win32 (incluindo uma aplicação com localização externa).
- Por fim, definir
uap10:RuntimeBehaviorpara "windowsApp" dá-te uma aplicação UWP.
Para todas as opções de tipos de aplicações que pode desenvolver, veja Windows app desenvolvimento: opções e funcionalidades.
SDK de Aplicações Windows: dependente do framework ou autónomo
Se a sua aplicação usar o SDK de Aplicações Windows, então também escolhe como implementar o runtime do SDK do qual a sua aplicação depende: dependente do framework (o predefinido, onde o runtime do SDK de Aplicações Windows e/ou o pacote Framework devem estar presentes na máquina de destino) ou autónomo (a sua aplicação carrega as dependências do SDK de Aplicações Windows). Para mais informações, consulte a visão geral da implementação do SDK de Aplicações Windows.
Windows Gestor de Pacotes e o cliente WinGet
Um package manager pode ajudar os seus utilizadores a instalar/atualizar/configurar o seu software automatizando o fluxo de trabalho. Os gestores de pacotes podem ajudar a instalar qualquer software, mas tendem a ser usados principalmente para instalar developer tools. Por isso, se está a desenvolver uma ferramenta para programadores, poderá estar particularmente interessado nesta opção. Mas é assim que funciona:
- Você, enquanto programador de software, define à package manager (sob a forma de instruções declarativas) todas as peças necessárias para uma instalação bem-sucedida do seu produto.
- E depois, quando um utilizador instala o seu software, o package manager segue as instruções declarativas para automatizar o fluxo de trabalho de instalação e configuração.
O resultado é uma redução do tempo gasto a preparar o ambiente do utilizador e uma melhor compatibilidade entre os componentes instalados. E pode usar o Windows Gestor de Pacotes para distribuir as suas aplicações embaladas ou não embaladas em formatos como .msix, .msi e .exe.
Para mais informações, consulte Windows Gestor de Pacotes.
Windows developer