Partilhar via


Tutorial: Utilizar a API de bootstrapper numa aplicação empacotada com localização externa ou numa aplicação desempacotada que utiliza o Windows App SDK

Este artigo mostra como configurar um aplicativo que não está instalado usando MSIX (ou seja, é empacotado com local externo ou não empacotado) para usar a API de bootstrapper para que ele carregue explicitamente o tempo de execução do SDK de Aplicativo Windows e chame APIs do SDK de Aplicativo 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 do Windows 1.0, a abordagem padrão para carregar o SDK de Aplicações do Windows a partir de uma aplicação empacotada com local externo ou de uma aplicação não empacotada é usar inicialização automática através da propriedade de projeto <WindowsPackageType> (bem como fazer as alterações de configuração adicionais). Para obter as etapas envolvidas na inicialização automática no contexto do projeto WinUI 3, consulte Criar seu primeiro projeto WinUI 3. Ou, se tiver um projeto existente que não seja WinUI 3, consulte Usar o SDK do Aplicativo Windows em um projeto existente.

Se você tiver necessidades avançadas (como tratamento de erros personalizado ou para carregar uma versão específica do SDK do Aplicativo Windows), poderá chamar a API de bootstrapper explicitamente. E é essa a abordagem que este tópico demonstra. Além disso, para mais informações, veja Utilizar o runtime do SDK de Aplicativos Windows para aplicativos empacotados com localização externa ou não empacotados.

Este tópico demonstra explicitamente como chamar a API de bootstrapper a partir de um projeto básico de aplicação de consola; mas os passos aplicam-se a qualquer aplicação de ambiente de trabalho desempacotada que utilize o SDK de Aplicações do Windows.

Antes de concluir este tutorial, recomendamos que você revise de arquitetura do Runtime para saber mais sobre a dependência do pacote do Framework que seu aplicativo usa quando usa o SDK de Aplicativo do Windows e os componentes adicionais necessários para trabalhar em um pacote com local externo ou aplicativo não empacotado.

Pré-requisitos

  1. Instalar ferramentas para o SDK de aplicativos Windows.
  2. Certifique-se de que todas as dependências de aplicativos empacotados com local externo e não empacotados estejam instaladas (consulte guia de implantação do SDK de Aplicativos Windows para aplicativos dependentes de estrutura empacotados com local externo ounão empacotados ). Uma maneira fácil de fazer isso é executar o instalador do runtime do SDK de aplicações do Windows.

Instruções

Você pode seguir este tutorial usando um projeto 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 deve ser iniciado com privilégios elevados. Consulte Dependências dinâmicas não suportam a elevação #567 para obter mais detalhes.

Siga estas instruções para configurar um projeto C# WinUI 3 empacotado com localização externa ou desempacotado.

  1. No Visual Studio, crie um novo aplicativo de console C# projeto. Nomeie o projeto DynamicDependenciesTest. Depois de criar o projeto, você deve ter um "Olá, Mundo!" Aplicativo de console C#.

  2. Em seguida, configure seu projeto.

    1. No Gerenciador de Soluções, clique com o botão direito do mouse em seu projeto e escolha Editar arquivo de projeto.
    2. Substitua o valor do elemento TargetFramework por um Target Framework Moniker. Por exemplo, use o seguinte se seu aplicativo tiver como alvo o Windows 10, versão 2004.
    <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
    
    1. Salve e feche o arquivo de projeto.
  3. Altere a plataforma da sua solução para x64. O valor padrão em um projeto .NET é AnyCPU, mas WinUI 3 não suporta essa plataforma.

    1. Selecione Compilação>Gestor de Configurações.
    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. No Configuration Manager, clique em Fechar.
  4. Instale o pacote NuGet do SDK de Aplicativo Windows em seu projeto.

    1. No Explorador de Soluções, clique com o botão direito do rato no nó Dependências e escolha Gerir Pacotes NuGet.
    2. Na janela Gerenciador de Pacotes NuGet, selecione a guia Procurar e instale o pacote Microsoft.WindowsAppSDK.
  5. Agora você está pronto para usar a API de bootstrapper (consulte Usar o tempo de execução do SDK de Aplicações da Windows para aplicações empacotadas com local externo ou não empacotadas) para assumir dinamicamente uma dependência do pacote estrutural do Windows App SDK. Isso permite que você use as APIs do SDK de aplicativos Windows em seu aplicativo.

    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. Esse código define de qual versão do SDK do Aplicativo Windows o aplicativo depende ao inicializar o bootstrapper.

    Importante

    Você precisará editar o código abaixo para se adequar à sua configuração específica. Consulte as descrições dos parâmetros do método Bootstrap.Initialize para que você possa especificar uma das versões do SDK do Aplicativo Windows 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();
            }
        }
    }
    

    Em sua raiz, a API de bootstrapper é uma API C/C++ nativa que permite que você use as APIs do SDK de aplicativos Windows em seu aplicativo. Mas em um aplicativo .NET que usa o Windows App SDK 1.0 ou posterior, você pode usar o wrapper .NET para a API de bootstrapper. Esse wrapper fornece uma maneira mais fácil de chamar a API de bootstrapper em um aplicativo .NET do que chamar as funções C/C++ nativas diretamente. O exemplo de código anterior chama os métodos estáticos Initialize e Shutdown da classe Bootstrap no envelope .NET para a API de arranque.

  6. Para demonstrar que os componentes de runtime do Windows App SDK foram carregados corretamente, adicione algum código que utilize a classe ResourceManager no Windows App SDK para carregar um recurso de texto.

    1. Adicione um novo ficheiro de recursos (.resw) ao seu projeto (mantenha o nome padrão).

    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 é WPF

Para uma aplicação do Windows Presentation Foundation (WPF), consulte Utilizar o SDK do Windows App numa aplicação WPF.