Delen via


Zelfstudie: De bootstrapper-API gebruiken in een app die is verpakt met een externe locatie of uitgepakt die gebruikmaakt van de Windows App SDK

In dit artikel wordt beschreven hoe u een app configureert die niet is geïnstalleerd met behulp van MSIX (dat wil gezegd: deze is verpakt met externe locatie of uitgepakt) om de bootstrapper-API te gebruiken, zodat de Windows App SDK runtime expliciet wordt geladen en Windows App SDK API's worden aangeroepen. Apps die niet via MSIX zijn geïnstalleerd, bevatten apps die zijn verpakt met externe locatie en uitgepakte apps.

Belangrijk

Vanaf de Windows App SDK 1.0 is de standaardbenadering voor het laden van de Windows App SDK vanuit een verpakte met externe locatie of uitgepakte app het gebruik van auto-initialisatie via de eigenschap <WindowsPackageType> project (en aanvullende configuratiewijzigingen aanbrengen). Zie Maak uw eerste WinUI-project voor de stappen voor automatische initialisatie in de context van een WinUI 3-project. Als u een bestaande project hebt die geen WinUI is, raadpleegt u Gebruik de Windows App SDK in een bestaande project.

Als u geavanceerde behoeften hebt (zoals aangepaste foutafhandeling of om een specifieke versie van de Windows App SDK te laden), kunt u in plaats daarvan de bootstrapper-API expliciet aanroepen. En dat is de benadering die in dit onderwerp wordt gedemonstreert. Zie ook Gebruik de Windows App SDK runtime voor apps die zijn verpakt met externe locatie of uitgepakt voor meer informatie.

In dit onderwerp wordt expliciet beschreven hoe u de bootstrapper-API aanroept vanuit een basisconsole-app project; maar de stappen zijn van toepassing op elke uitgepakte desktop-app die gebruikmaakt van de Windows App SDK.

Voordat u deze zelfstudie voltooit, raden we u aan Runtime-architectuur te bekijken voor meer informatie over de Framework pakketafhankelijkheid die uw app nodig heeft wanneer deze gebruikmaakt van de Windows App SDK en de aanvullende onderdelen die nodig zijn om te werken in een pakket met externe locatie of uitgepakte app.

Vereiste voorwaarden

  1. Installeren van hulpmiddelen voor de Windows App SDK.
  2. Zorg ervoor dat alle afhankelijkheden voor verpakte met externe locatie en uitgepakte apps zijn geïnstalleerd (zie Windows App SDK implementatiehandleiding voor frameworkafhankelijke apps die zijn verpakt met externe locatie of uitgepakt). Een eenvoudige manier om het Windows App SDK-runtime-installatieprogramma te starten.

Aanwijzingen

U kunt deze zelfstudie volgen met behulp van een C# of een C++-project.

Opmerking

De dynamische afhankelijkheden en bootstrapper-API's mislukken wanneer ze worden aangeroepen door een verhoogd proces. Als gevolg hiervan mag Visual Studio niet worden gestart met verhoogde bevoegdheden. Zie Dynamic-afhankelijkheden bieden geen ondersteuning voor uitbreiding van #567 voor meer informatie.

Volg deze instructies om een C# WinUI-project te configureren dat is verpakt op een externe locatie of niet verpakt.

  1. Maak in Visual Studio een nieuwe C# Console-app project. Noem het project DynamicDependenciesTest. Nadat u de project hebt gemaakt, moet u een C#-console-app 'Hallo wereld!' hebben.

  2. Configureer vervolgens uw project.

    1. Klik in Solution Explorer met de rechtermuisknop op uw project en kies Bewerken Project Bestand.
    2. Vervang de waarde van het TargetFramework-element door een Target Framework Moniker. Gebruik bijvoorbeeld het volgende als uw app is gericht op Windows 10 versie 2004.
    <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
    
    1. Sla het project bestand op en sluit het.
  3. Wijzig het platform voor uw oplossing in x64. De standaardwaarde in een .NET project is AnyCPU, maar WinUI biedt geen ondersteuning voor dat platform.

    1. Selecteer Build>Configuration Manager.
    2. Selecteer de vervolgkeuzelijst onder Het actieve oplossingsplatform en klik op Nieuw om het dialoogvenster Nieuw oplossingsplatform te openen.
    3. Selecteer in de vervolgkeuzelijst onder Type of selecteer het nieuwe platform, selecteer x64.
    4. Klik op OK om het dialoogvenster Nieuw oplossingsplatform te sluiten.
    5. Klik in Configuration Manager op Sluiten.
  4. Installeer het Windows App SDK NuGet-pakket in uw project.

    1. Klik in Solution Explorer met de rechtermuisknop op het knooppunt Afhankelijkheden en kies Beheer nuget-pakketten.
    2. Selecteer in het venster NuGet Package Manager het tabblad Browse en installeer het pakket Microsoft.WindowsAppSDK.
  5. U bent nu klaar om de bootstrapper-API te gebruiken (zie Gebruik de Windows App SDK-runtime voor apps die zijn verpakt met externe locatie of uitgepakt) om dynamisch afhankelijk te zijn van het Windows App SDK framework-pakket. Hiermee kunt u de Windows App SDK API's in uw app gebruiken.

    Open het Program.cs codebestand en vervang de standaardcode door de volgende code om de methode Bootstrap.Initialize aan te roepen om de bootstrapper te initialiseren. Deze code definieert welke versie van de Windows App SDK de app afhankelijk is bij het initialiseren van de bootstrapper.

    Belangrijk

    U moet de onderstaande code bewerken om aan uw specifieke configuratie te voldoen. Zie de beschrijvingen van de parameters van de methode Bootstrap.Initialize zodat u een van de versies van de Windows App SDK kunt opgeven die u hebt geïnstalleerd.

    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();
            }
        }
    }
    

    In de kern is de bootstrapper-API een native C/C++-API waarmee u de Windows App SDK-API's in uw app kunt gebruiken. Maar in een .NET-app die gebruikmaakt van de Windows App SDK 1.0 of hoger, kunt u de .NET wrapper gebruiken voor de bootstrapper-API. Deze wrapper biedt een eenvoudigere manier om de bootstrapper-API in een .NET-app aan te roepen dan de systeemeigen C/C++-functies rechtstreeks aan te roepen. In het vorige codevoorbeeld worden de statische Initialize en Shutdown methoden van de Bootstrap klasse aangeroepen in de .NET wrapper voor de Bootstrapper API.

  6. Als u wilt laten zien dat de Windows App SDK runtime-onderdelen correct zijn geladen, voegt u code toe die gebruikmaakt van de klasse ResourceManager in de Windows App SDK om een tekenreeksresource te laden.

    1. Voeg een nieuwe Resources-bestand (.resw) toe aan uw project (laat de standaardnaam staan).

    2. Wanneer het resourcesbestand in de editor is geopend, maakt u een nieuwe string resource met de volgende eigenschappen.

      • Naam: bericht
      • Waarde: Hallo, bronnen!
    3. Sla het resourcesbestand op.

    4. Open het codebestand Program.cs en vervang de Console.WriteLine("Hello, World!"); regel door de volgende code.

    // 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. Klik op Starten zonder foutopsporing (of Foutopsporing starten) om uw app te bouwen en uit te voeren. U zou moeten zien dat de tekenreeks Hello, resources! succesvol wordt weergegeven.

Als uw project een WPF-project is

Zie Gebruik de Windows App SDK in een WPF-app voor een Windows Presentation Foundation-app (WPF).