Tutorial: Usar a API bootstrapper em um aplicativo empacotado com localização externa ou desempacotado que utiliza o SDK do Aplicativo Windows

Este artigo mostra como configurar um aplicativo que não está instalado utilizando o MSIX (ou seja, empacotado em uma localização externa ou não empacotado) para usar a API bootstrapper, de modo que carregue explicitamente o runtime do SDK do Aplicativo Windows e chame as APIs do SDK de Aplicativos do Windows. Os aplicativos que não são instalados por meio do MSIX incluem aplicativos empacotados com localização externa e aplicativos não empacotados.

Importante

A partir do SDK do Aplicativo Windows 1.0, a abordagem padrão para carregar o SDK do Aplicativo Windows de um aplicativo empacotado com localização externa ou não empacotado é usar auto-initialization por meio da propriedade de projeto <WindowsPackageType> (além de fazer alterações de configuração adicionais). Para obter as etapas envolvidas na inicialização automática no contexto do WinUI 3 project, consulte Criar seu primeiro WinUI project. Ou, se tiver um project existente que não seja WinUI, consulte Utilize o SDK do Aplicativo Windows em um project existente.

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

Este tópico demonstra explicitamente a chamada da API bootstrapper de um aplicativo de console básico; mas as etapas se aplicam a qualquer aplicativo de área de trabalho não empacotado que use o SDK do Aplicativo Windows.

Antes de concluir este tutorial, recomendamos que você examine a arquitetura Runtime para saber mais sobre a dependência de pacote Framework que seu aplicativo usa quando usa o SDK do Aplicativo 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 do Aplicativo Windows.
  2. Verifique se todas as dependências para aplicativos empacotados com localização externa e aplicativos não empacotados estão instaladas (consulte o guia de implantação do SDK do Aplicativo Windows para aplicativos dependentes de estrutura empacotados com localização externa ou não empacotados). Uma maneira fácil de fazer isso é executar o instalador de tempo de execução do SDK do Aplicativo Windows.

Instruções

Você pode seguir este tutorial usando um C# ou um project C++.

Observação

As dependências dinâmicas e as APIs do 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 suporta elevação nº 567 para mais detalhes.

Siga estas instruções para configurar um projeto WinUI em C# que esteja empacotado em local externo ou desempacotado.

  1. Em Visual Studio, crie um novo aplicativo C# Console project. Nomear o projeto DynamicDependenciesTest. Depois de criar o project, você deverá ter um aplicativo de console C# "Olá, Mundo!".

  2. Em seguida, configure o projeto.

    1. Em Gerenciador de Soluções, clique com o botão direito do mouse no seu projeto e escolha Editar Arquivo de Projeto.
    2. Substitua o valor do elemento TargetFramework por um Identificador de Estrutura de Destino. Por exemplo, use o seguinte se o aplicativo for direcionado para o Windows 10, versão 2004.
    <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
    
    1. Salve e feche o arquivo do projeto.
  3. Altere a plataforma da solução para x64. O valor padrão em um .NET project é AnyCPU, mas o WinUI não dá suporte a essa plataforma.

    1. Selecione Build>Gerenciador de Configurações.
    2. Selecione o menu suspenso em Plataforma de solução ativa e clique em Novo para abrir a caixa de diálogo Nova Plataforma de Solução.
    3. Na caixa suspensa em Digite ou selecione a nova plataforma, selecione x64.
    4. Clique em OK para fechar a caixa de diálogo Nova Plataforma de Solução .
    5. Em Gerenciador de Configurações, clique em Close.
  4. Instale o pacote NuGet SDK do Aplicativo Windows em seu project.

    1. Em Gerenciador de Soluções, clique com o botão direito do mouse no nó Dependencies e escolha Manage Nuget Packages.
    2. Na janela NuGet Gerenciador de Pacotes, selecione a guia Browse e instale o pacote Microsoft.WindowsAppSDK.
  5. Agora você está pronto para usar a API bootstrapper (consulte usando o runtime do SDK do Aplicativo Windows para aplicativos empacotados em localização externa ou não empacotados) para estabelecer dinamicamente uma dependência do pacote de estrutura do SDK do Aplicativo Windows. Isso permite que você use as APIs de SDK do Aplicativo 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 método Bootstrap.Initialize 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 instalada.

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

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

    1. Adicione um novo arquivo Resources (.resw) ao project (deixe o nome padrão).

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

      • Nome: Message
      • Valor: Hello, resources!
    3. Salve o arquivo de recursos.

    4. Abra o arquivo de código Program.cs e substitua a Console.WriteLine("Hello, World!"); linha 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 em Iniciar sem depuração (ou Iniciar depuração) para criar e executar seu aplicativo. Você deve ver a cadeia de caracteres Hello, resources! exibida com êxito.

Se o seu projeto for em WPF

Para obter um aplicativo Windows Presentation Foundation (WPF), consulte Use o SDK do Aplicativo Windows em um projeto existente.