Compartilhar via


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

Este artigo mostra como configurar um aplicativo que não foi instalado usando o MSIX (ou seja, ele é empacotado com local externo ou não empacotado) para usar a API bootstrapper para carregar explicitamente o runtime do Windows App SDK e chamar as APIs do Windows App SDK. 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 Windows App SDK 1.0, a abordagem padrão para carregar o Windows App SDK 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 Windows App SDK em um project existente.

Se você tiver necessidades avançadas (como tratamento de erros personalizados ou carregar uma versão específica do Windows App SDK), 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 Windows App SDK 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 Windows App SDK.

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 Windows App SDK 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 Windows App SDK.
  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 Windows App SDK 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 Windows App SDK.

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 Solution Explorer, 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>Configuration Manager.
    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 Configuration Manager, clique em Close.
  4. Instale o pacote NuGet Windows App SDK em seu project.

    1. Em Solution Explorer, clique com o botão direito do mouse no nó Dependencies e escolha Manage Nuget Packages.
    2. Na janela NuGet Package Manager, 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 Windows App SDK para aplicativos empacotados em localização externa ou não empacotados) para estabelecer dinamicamente uma dependência do pacote de estrutura do Windows App SDK. Isso permite que você use as APIs de Windows App SDK 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 Windows App SDK 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 Windows App SDK 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 Windows App SDK 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 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 Windows App SDK foram carregados corretamente, adicione algum código que use a classe ResourceManager no Windows App SDK 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 um aplicativo do Windows Presentation Foundation (WPF), consulte Use o Windows App SDK em um aplicativo WPF.