Tutorial: Utilize a API bootstrapper numa aplicação com localização externa ou numa aplicação não empacotada que utilize o SDK de Aplicações Windows.

Este artigo mostra como configurar uma aplicação que ainda não está instalada utilizando o MSIX (ou seja, está empacotada com localização externa ou não empacotada) para usar a API de bootstrapper, para que execute explicitamente o runtime do SDK de Aplicações Windows e chame as APIs do SDK de Aplicações Windows. As aplicações que não são instaladas através do MSIX incluem aplicações empacotadas com localização externa e aplicações não embaladas.

Importante

A partir do SDK de Aplicações Windows 1.0, a abordagem padrão para carregar o SDK de Aplicações Windows a partir de uma aplicação empacotada com localização externa ou não empacotada é usar autoinicialização através da propriedade de projeto <WindowsPackageType> (bem como fazer alterações adicionais na configuração). Para os passos envolvidos na autoinicialização no contexto do WinUI 3 project, veja Crie o seu primeiro WinUI project. Ou, se tiveres um projeto existente que não seja o WinUI, então vê Usa o SDK de Aplicações Windows num projeto existente.

Se tiver necessidades avançadas (como gestão personalizada de erros ou carregar uma versão específica do SDK de Aplicações Windows), então pode chamar explicitamente a API do bootstrapper. E é essa a abordagem que este tópico demonstra. Além disso, para mais informações, veja Use o tempo de execução SDK de Aplicações Windows para aplicações empacotadas com localização externa ou não empacotadas.

Este tópico demonstra como chamar explicitamente a API bootstrapper a partir de um projeto básico de aplicação de linha de comandos. Os passos aplicam-se a qualquer aplicação de ambiente de trabalho não empacotada que utilize o SDK de Aplicações Windows.

Antes de concluir este tutorial, recomendamos que reveja Runtime architecture para saber mais sobre a dependência de pacotes Framework que a sua aplicação assume ao usar o SDK de Aplicações Windows, bem como os componentes adicionais necessários para funcionar numa aplicação empacotada com localização externa ou não empacotada.

Pré-requisitos

  1. Instalar ferramentas para o SDK de Aplicações Windows.
  2. Certifique-se de que todas as dependências para aplicações embaladas com localização externa e não empacotadas estão instaladas (ver guia de implementação SDK de Aplicações Windows para aplicações dependentes do framework empacotadas com localização externa ou não empacotadas). Uma forma fácil de fazer isso é executar o instalador do tempo de execução do SDK de Aplicações Windows.

Instruções

Podes seguir este tutorial usando um project em C# ou C++.

Observação

As dependências dinâmicas e as APIs de bootstrapper falham quando chamadas por um processo elevado. Como resultado, o Visual Studio não deveria ser lançado de forma elevada. Veja Dependências Dinâmicas não suporta elevação #567 para mais detalhes.

Siga estas instruções para configurar um project WinUI em C# que seja empacotado com localização externa ou não empacotado.

  1. No Visual Studio, crie um novo projeto de aplicação de consola C#. Nomeie o projeto DynamicDependenciesTest. Depois de criares o projeto, deves ter uma aplicação de consola C# "Olá, Mundo!".

  2. De seguida, configura o teu projeto.

    1. Em Explorador de Soluções, clique com o botão direito do rato no seu projeto e escolha Editar ficheiro de projeto.
    2. Substitua o valor do elemento TargetFramework por um Target Framework Moniker. Por exemplo, use o seguinte se a sua aplicação tiver como alvo o Windows 10, versão 2004.
    <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
    
    1. Guarde e feche o ficheiro do project.
  3. Altere a plataforma da sua solução para x64. O valor predefinido numa .NET project é AnyCPU, mas o WinUI não suporta essa plataforma.

    1. Selecione Build>Gestor de Configuração.
    2. Selecione a lista suspensa sob Plataforma de solução ativa e clique em Nova para abrir a caixa de diálogo Nova Plataforma de Solução.
    3. Na lista suspensa em , escolha ou introduza a nova plataforma, e selecione x64.
    4. Clique OK para fechar a caixa de diálogo Nova Plataforma de Solução.
    5. Em Gestor de Configuração, clique em Fechar.
  4. Instale o pacote NuGet do SDK de Aplicações Windows no seu projecto.

    1. Em Explorador de Soluções, clique com o botão direito no nó Dependências e escolha Gerir Pacotes Nuget.
    2. Na janela NuGet Gestor de Pacotes, selecione o separador Browse e instale o pacote Microsoft.WindowsAppSDK.
  5. Agora está pronto para usar a API do Bootstrapper (veja Use o tempo de execução do SDK de Aplicações Windows para aplicações com localização externa ou não empacotadas) para adquirir dinamicamente uma dependência do pacote de framework do SDK de Aplicações Windows. Isto permite-lhe usar as APIs do SDK de Aplicações Windows na sua aplicação.

    Abra o arquivo de código Program.cs e substitua o código padrão pelo código a seguir para chamar o Bootstrap.Initialize método para inicializar o bootstrapper. Este código define de que versão do SDK de Aplicações Windows a aplicação depende ao inicializar o bootstrapper.

    Importante

    Você precisará editar o código abaixo para se adequar à sua configuração específica. Veja as descrições dos parâmetros do método Bootstrap.Initialize para que possa especificar uma das versões do SDK de Aplicações Windows que tem instaladas.

    using System;
    using Microsoft.Windows.ApplicationModel.DynamicDependency;
    
    namespace DynamicDependenciesTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                Bootstrap.Initialize(0x00010002);
                Console.WriteLine("Hello, World!");
    
                // Release the DDLM and clean up.
                Bootstrap.Shutdown();
            }
        }
    }
    

    Na sua essência, a API bootstrapper é uma API nativa C/C++ que lhe permite usar as APIs do SDK de Aplicações Windows na sua aplicação. Mas numa aplicação .NET que usa a SDK de Aplicações Windows 1.0 ou posterior, podes usar o wrapper .NET para a API bootstrapper. Esse wrapper oferece uma forma mais fácil de chamar a API bootstrapper numa aplicação .NET do que chamar diretamente as funções nativas C/C++. O exemplo de código anterior invoca os métodos estáticos Initialize e Shutdown da classe Bootstrap na implementação em .NET para a API de arranque.

  6. Para demonstrar que os componentes de execução SDK de Aplicações Windows foram carregados corretamente, adicione algum código que utilize a classe ResourceManager na SDK de Aplicações Windows para carregar um recurso de cadeia.

    1. Adicione um novo ficheiro Resources (.resw) ao seu project (mantenha o nome predefinido).

    2. Com o arquivo de recursos aberto no editor, crie um novo recurso de cadeia de caracteres com as seguintes propriedades.

      • Nome: Mensagem
      • Valor: Olá, recursos!
    3. Salve o arquivo de recursos.

    4. Abra o arquivo de código Program.cs e substitua a linha Console.WriteLine("Hello, World!"); pelo código a seguir.

    // Create a resource manager using the resource index generated during build.
       var manager = new Microsoft.Windows.ApplicationModel.Resources.ResourceManager("DynamicDependenciesTest.pri");
    
    // Look up a string in the .resw file using its name.
    Console.WriteLine(manager.MainResourceMap.GetValue("Resources/Message").ValueAsString);
    
    1. Clique Iniciar sem depuração (ou Iniciar a depuração) para compilar e executar a sua aplicação. Você deverá ver a string Hello, resources! exibida com êxito.

Se o seu projeto for WPF

Para uma aplicação Windows Presentation Foundation (WPF), veja Use a SDK de Aplicações Windows num projeto existente.