Arquitetura de implantação e visão geral para aplicativos dependentes de estrutura

Este artigo explica uma arquitetura de alto nível para a implementação do SDK de Aplicações Windows. Os conceitos abaixo aplicam-se principalmente a aplicações dependentes do framework do SDK de Aplicações Windows. Uma aplicação dependente do framework depende do tempo de execução do SDK de Aplicações Windows estar presente na máquina de destino.

Há duas opções principais para distribuir um aplicativo dependente da estrutura:

Método de implantação do aplicativo Requerimentos
Embalado - Deve declarar dependência do pacote Framework no manifesto do pacote.
- A API de implantação é necessária para aplicativos distribuídos da Microsoft Store e recomendada para aplicativos distribuídos que não sejam da Loja para garantir que as dependências de tempo de execução sejam instaladas.
Embalado com localização externa ou não embalado - Deve distribuir o tempo de execução usando o instalador ou instalando pacotes MSIX necessários diretamente.
- Requisitos adicionais de tempo de execução: Deve inicializar o acesso ao runtime do SDK de Aplicações Windows através da API Bootstrap.

Para obter mais detalhes sobre esses requisitos, consulte os seguintes artigos:

Termos principais

As secções seguintes definem termos-chave para a implementação do SDK de Aplicações Windows e detalhes adicionais sobre alguns destes pacotes.

Período Definição
SDK de Aplicações Windows tempo de execução Os pacotes MSIX exigidos por uma aplicação para usar o SDK de Aplicações Windows. Esses pacotes incluem: Framework, Main, Singleton e DDLM. Dependendo dos recursos usados e do método de implantação do aplicativo, você precisará de um determinado conjunto desses pacotes na máquina de destino.
Pacote de Framework Contém binários usados em tempo de execução pelas aplicações (a maioria das funcionalidades do SDK de Aplicações Windows). A estrutura inclui um componente bootstrapper que permite às aplicações instalar automaticamente a versão mais recente do SDK de Aplicações Windows, que será atualizada com um ritmo de lançamento regular.
Embalagem principal Pacote que contém tarefas em segundo plano para acompanhar as dependências dinâmicas e permite atualizações automáticas para o pacote Framework da Microsoft Store.
pacote Singleton Contém tarefas em segundo plano, serviços, extensões de aplicativo e outros componentes não incluídos no pacote do Framework, como notificações por push. Geralmente, trata-se de um único processo de longa execução que é intermediado entre aplicativos.
pacote DDLM (Dynamic Dependency Lifetime Manager) Impede que o sistema operacional execute atualizações de manutenção para os pacotes MSIX enquanto um pacote com local externo ou aplicativo não empacotado estiver em uso.
Bootstrapper Um binário associado à aplicação, utilizado por aplicações embaladas com localização externa e por aplicações não embaladas, para localizar e carregar a versão mais adequada do SDK de Aplicações Windows conforme as necessidades da aplicação.
Aprovisionamento A preparação de pacotes ao nível de todo o sistema, para que qualquer utilizador no computador os possa registar e utilizar sem ser necessário repetir a preparação ao nível da máquina. O provisionamento pode ser realizado como parte da imagem do sistema operativo ou durante a implementação de aplicações empresariais.
Instalador Refere-se ao instalador de .exe que implanta os pacotes Framework, Main, Singleton e DDLM.
MSIX Tecnologia de instalação moderna que permite aos usuários instalar com segurança um aplicativo por usuário, diretamente da Microsoft Store ou de um site. Em computadores corporativos ou compartilhados, os aplicativos podem ser instalados para todos os usuários via PowerShell e MDM.

Pacote de Framework

Quando constrói uma aplicação que utiliza o SDK de Aplicações Windows, a sua aplicação refere-se a um conjunto de componentes de runtime SDK de Aplicações Windows que são distribuídos aos utilizadores finais através de um pacote framework. O pacote framework permite que as aplicações acedam aos componentes do SDK de Aplicações Windows através de uma única fonte partilhada no dispositivo do utilizador, em vez de os agrupar no pacote da aplicação. O pacote framework também contém os seus próprios recursos, como DLLs e definições de API (registos de COM e do Windows Runtime). Esses recursos são executados no contexto do seu aplicativo, portanto, eles herdam os recursos e privilégios do seu aplicativo e não afirmam nenhum recurso ou privilégio próprio. Para obter mais informações sobre dependências de pacotes de estrutura, consulte pacotes de estrutura MSIX e dependências dinâmicas.

O pacote framework SDK de Aplicações Windows é um pacote MSIX que é implementado para os utilizadores finais através da Microsoft Store. Ele pode ser fácil e rapidamente atualizado com versões de manutenção, que podem incluir correções de segurança e confiabilidade. Todas as aplicações dependentes do framework que utilizam o SDK de Aplicações Windows têm uma dependência de uma instância partilhada do pacote framework, como ilustrado no diagrama seguinte.

Diagrama de como as aplicações acessam o pacote de framework do SDK de Aplicações Windows

Quando uma nova versão do pacote framework SDK de Aplicações Windows é atendida, todas as aplicações dependentes do framework são atualizadas para a nova versão sem terem de redistribuir uma cópia. O Windows atualiza para a versão mais recente das estruturas à medida que são lançadas, e os aplicativos farão referência automática à versão mais recente do pacote de estruturas durante o relançamento. As versões mais antigas do pacote de estrutura não serão removidas do sistema até que não estejam mais em execução ou sendo usadas ativamente por aplicativos no sistema.

Diagrama de como as aplicações recebem atualizações para o pacote framework SDK de Aplicações Windows

Como a compatibilidade de aplicações é importante para a Microsoft e para as aplicações que dependem do SDK de Aplicações Windows, o pacote framework SDK de Aplicações Windows segue as regras Semantic Versioning 2.0.0. Isto significa que, depois de lançarmos a versão 1.0 do SDK de Aplicações Windows, o pacote de estrutura do SDK de Aplicações Windows garantirá compatibilidade entre alterações de versão menor e de correção, e as alterações significativas ocorrerão apenas entre atualizações principais de versão.

Pacote Singleton

O pacote singleton garante que um único processo de longa duração pode lidar com serviços usados em múltiplas aplicações, que podem estar a correr em diferentes versões do SDK de Aplicações Windows.

O singleton do SDK de Aplicações Windows é necessário para ativar notificações push em aplicações não empacotadas e aplicações Win32 empacotadas em versões do Windows anteriores à 20H1, que não são suportadas pelas classes UWP existentes PushNotificationTrigger e ToastNotificationActionTrigger. Futuras funcionalidades do SDK de Aplicações Windows que não possam ser suportadas pelo pacote Framework serão adicionadas ao pacote Singleton.

Requisitos adicionais para aplicativos não empacotados

Bootstrapper

O bootstrapper é uma biblioteca que deve ser incluída com o seu pacote quando é utilizado um local externo ou uma aplicação não empacotada. Fornece a API bootstrapper (consulte Utilize o tempo de execução do SDK de Aplicações Windows para aplicações empacotadas com localização externa ou não empacotadas), que permite que aplicações não empacotadas realizem estas tarefas importantes:

  • Inicialize o Gestor de Tempo de Vida de Dependência Dinâmica (DDLM) para o pacote framework do SDK de Aplicações Windows.
  • Encontre e carregue o pacote framework do SDK de Aplicações Windows no gráfico de pacotes da aplicação.

Para realizar estas tarefas, o pacote nuget utiliza auto-inicializadores para configurar automaticamente o bootstrapper. Basta definir <WindowsPackageType>None</WindowsPackageType> no seu ficheiro de projeto. Em cenários avançados, se quiseres controlar a inicialização, podes chamar a API do bootstrapper diretamente no código de arranque da tua app (ver Tutorial: Usa a API do bootstrapper numa app com localização externa ou não empacotada que use o SDK de Aplicações Windows) para que possa inicializar corretamente o sistema para a app não empacotada. A sua aplicação deve usar a API bootstrapper antes de poder utilizar funcionalidades do SDK de Aplicações Windows como WinUI 3, ciclo de vida da aplicação, MRT Core e DWriteCore.

A biblioteca bootstrapper na versão SDK de Aplicações Windows 1.0 inclui:

  • Microsoft.WindowsAppRuntime.Bootstrap.dll (C++ e C#)
  • Microsoft.WindowsAppRuntime.Bootstrap.Net.dll (wrapper em C#)

Gerenciador de tempo de vida de dependência dinâmica (DDLM)

O objetivo do DDLM é impedir a manutenção do pacote framework do SDK de Aplicações Windows enquanto este está a ser utilizado por uma aplicação não empacotada. Ele contém um servidor que deve ser inicializado pelo bootstrapper no início da inicialização de um aplicativo para fornecer essa funcionalidade.

Existe um DDLM para cada versão e arquitetura do pacote framework do SDK de Aplicações Windows. Isso significa que, em um(a) x64 computador, poderá ter uma versão x86 e uma versão x64 do DDLM para suportar aplicações de ambas as arquiteturas.

Requisitos adicionais

Canalização de implementação do MSIX

Quando adiciona um pacote MSIX a uma máquina, o motor de implementação processa o pedido através de três etapas:

Stage Scope O que acontece
Índice Por máquina Analisa o manifesto do pacote e regista os metadados e o caminho de instalação pretendido
Estágio Por máquina Cria o diretório do pacote, extrai o payload e aplica ACLs
Registo Por utilizador Associa o pacote em etapas a um utilizador específico — cria entradas no menu Iniciar, associações de tipos de ficheiro e dados de execução

A encenação é realizada uma vez por máquina; O registo é feito por utilizador. Esta separação permite que um pacote seja disponibilizado (ou removido) para um utilizador sem afetar outros.

Note

O termo install é informal — não é um conceito formal no motor de implementação MSIX. Os pedidos de implementação utilizam a PackageManager API para submeter operações (Adicionar, Estágio, Registar, Remover, e assim por diante) à fila de implementação. Consulte Não existe “Install” — são “Stage” e “Register” no blogue Inside MSIX para obter uma explicação completa.