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

Este artigo explica uma arquitetura de alto nível de implantação de SDK do Aplicativo Windows. Os conceitos abaixo se aplicam principalmente a SDK do Aplicativo Windows aplicativos dependentes de estrutura. Um aplicativo dependente de estrutura depende do runtime SDK do Aplicativo Windows estar presente no computador de destino.

Há duas opções de main para distribuir um aplicativo dependente de estrutura:

Método de implantação do aplicativo Requisitos
Empacotados – Deve declarar a 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 Store para garantir que as dependências de runtime sejam instaladas.
Empacotado com localização externa ou não empacotado – Deve distribuir o runtime usando o Instalador ou instalando os pacotes MSIX necessários diretamente.
- Requisitos de runtime adicionais: deve inicializar o acesso ao runtime do SDK do Aplicativo Windows por meio da API do Bootstrap.

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

Principais termos

As seções a seguir definem termos-chave para SDK do Aplicativo Windows implantação e detalhes adicionais sobre alguns desses pacotes.

Termo Definição
runtime SDK do Aplicativo Windows Os pacotes MSIX exigidos por um aplicativo para usar o SDK do Aplicativo 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 no computador de destino.
Pacote de estrutura Contém binários usados em tempo de execução por aplicativos (a maioria SDK do Aplicativo Windows recursos). A estrutura inclui um componente bootstrapper que permite que os aplicativos instalem automaticamente a versão mais recente do SDK do Aplicativo Windows, que será atualizada em uma cadência de versão regular.
Pacote principal Pacote que contém tarefas em segundo plano para controlar dependências dinâmicas e habilita 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 framework, como Notificações por push. Geralmente, esse é um único processo de execução longa 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 empacotado com local externo ou aplicativo não empacotado está em uso.
Bootstrapper Um binário local do aplicativo usado por empacotado com localização externa e aplicativos não empacotados para localizar e carregar a melhor correspondência de versão SDK do Aplicativo Windows conforme necessário pelo aplicativo.
Provisionamento O processo de instalação e registro de pacotes (incluindo arquivos e chaves do Registro) em todo o sistema para eliminar a necessidade de instalação repetida pelos outros usuários. Ele pode ser feito como parte do sistema operacional ou feito durante a instalação de um aplicativo.
Instalador Refere-se ao instalador .exe que implanta os pacotes Framework, Main, Singleton e DDLM.
MSIX Tecnologia moderna do instalador que permite que os usuários instalem com segurança um aplicativo por usuário, diretamente da Microsoft Store ou de um site. Em computadores empresariais ou compartilhados, os aplicativos podem ser instalados para todos os usuários por meio do PowerShell e do MDM.

Pacote de estrutura

Quando você cria um aplicativo que usa o SDK do Aplicativo Windows, seu aplicativo faz referência a um conjunto de SDK do Aplicativo Windows componentes de runtime que são distribuídos aos usuários finais por meio de um pacote de estrutura. O pacote de estrutura permite que os aplicativos acessem SDK do Aplicativo Windows componentes por meio de uma única fonte compartilhada no dispositivo do usuário, em vez de agrupar-os no pacote do aplicativo. O pacote de estrutura também carrega seus próprios recursos, como DLLs e definições de API (REGISTROS COM e Windows Runtime). Esses recursos são executados no contexto do seu aplicativo, portanto, herdam os recursos e privilégios do seu aplicativo e não declaram nenhum recurso ou privilégio próprio. Para saber mais sobre as dependências do pacote de estrutura, confira Pacotes de estrutura do MSIX e dependências dinâmicas.

O pacote de estrutura SDK do Aplicativo Windows é um pacote MSIX implantado para usuários finais por meio da Microsoft Store. Ele pode ser atualizado com facilidade e rapidez com versões de manutenção, que podem incluir correções de segurança e confiabilidade. Todos os aplicativos dependentes de estrutura que usam o SDK do Aplicativo Windows têm uma dependência em uma instância compartilhada do pacote de estrutura, conforme ilustrado no diagrama a seguir.

Diagrama de como os aplicativos acessam o pacote da estrutura SDK do Aplicativo Windows

Quando uma nova versão do pacote SDK do Aplicativo Windows estrutura é atendida, todos os aplicativos dependentes de estrutura são atualizados para a nova versão sem precisar redistribuir uma cópia. O Windows atualiza para a versão mais recente das estruturas conforme elas são lançadas, e os aplicativos referenciam automaticamente a versão mais recente do pacote de estrutura 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 sejam usadas ativamente por aplicativos no sistema.

Diagrama de como os aplicativos obtêm atualizações para o pacote de estrutura de SDK do Aplicativo Windows

Como a compatibilidade do aplicativo é importante para a Microsoft e para aplicativos que dependem do SDK do Aplicativo Windows, o pacote de estrutura de SDK do Aplicativo Windows segue as regras de Versão Semântica 2.0.0. Isso significa que, depois de lançarmos a versão 1.0 do SDK do Aplicativo Windows, o pacote de estrutura SDK do Aplicativo Windows garantirá a compatibilidade entre as alterações secundárias e de versão do patch e as alterações interruptivas ocorrerão apenas entre as atualizações de versão principais.

Pacote Singleton

O pacote singleton garante que um único processo de execução longa possa lidar com serviços usados em vários aplicativos, que podem estar em execução em diferentes versões do SDK do Aplicativo Windows.

A SDK do Aplicativo Windows singleton é necessária para habilitar notificações por push para aplicativos não empacotados e aplicativos Win32 empacotados usando versões do Windows abaixo de 20H1, que não podem ser compatíveis com a classe PushNotificationTrigger e ToastNotificationActionTrigger existentes. Os recursos de SDK do Aplicativo Windows futuros que não têm suporte no pacote framework serão adicionados ao pacote Singleton.

Requisitos adicionais para aplicativos não empacotados

Bootstrapper

O bootstrapper é uma biblioteca que deve ser incluída com seu empacotado com local externo ou aplicativo não empacotado. Ele fornece a API bootstrapper (consulte Usar o runtime do SDK do Aplicativo Windows para aplicativos empacotados com local externo ou não empacotados), o que permite que aplicativos não empacotados executem estas tarefas importantes:

  • Inicialize o DDLM (Dynamic Dependency Lifetime Manager) para o pacote de estrutura SDK do Aplicativo Windows.
  • Localize e carregue o pacote da estrutura SDK do Aplicativo Windows no grafo de pacotes do aplicativo.

Para realizar essas tarefas, o pacote nuget aproveita os inicializadores de módulo para conectar o bootstrapper para você. Basta definir <WindowsPackageType>None</WindowsPackageType> em seu arquivo de projeto. Em cenários avançados, se você quiser controlar a inicialização, poderá chamar a API bootstrapper diretamente no código de inicialização do aplicativo (consulte Tutorial: Usar a API de inicialização em um aplicativo empacotado com local externo ou não empacotado que usa o SDK do Aplicativo Windows) para que ele possa inicializar corretamente o sistema para o aplicativo não empacotado. Seu aplicativo deve usar a API de bootstrapper antes de poder usar SDK do Aplicativo Windows recursos como WinUI, Ciclo de vida do aplicativo, MRT Core e DWriteCore.

A biblioteca bootstrapper na versão SDK do Aplicativo Windows 1.0 inclui:

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

DDLM (Dynamic Dependency Lifetime Manager)

A finalidade do DDLM é impedir a manutenção do pacote de estrutura SDK do Aplicativo Windows enquanto ele estiver em uso por um aplicativo não empacotado. Ele contém um servidor que deve ser inicializado pelo bootstrapper no início da inicialização de um aplicativo para fornecer essa funcionalidade.

Há um DDLM para cada versão e arquitetura do pacote de estrutura SDK do Aplicativo Windows. Isso significa que, em um x64 computador, você pode ter uma x86 versão e x64 do DDLM para dar suporte a aplicativos de ambas as arquiteturas.

Requisitos adicionais