Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med uppackad distribution kan du skicka en WinUI 3-app utan MSIX – användbart för företagsscenarier där MSIX-distributionen inte är tillgänglig eller för utvecklare som föredrar en traditionell mappbaserad installation.
Viktigt!
Granska dessa begränsningar innan du börjar. Uppackade WinUI 3-appar har begränsningar som påverkar distributionsstrategin:
-
No single-file EXE – Windows App SDK runtime- och WinUI 3-beroenden måste finnas som separata filer. Den .NET-funktionen för publicering som en enda fil (
PublishSingleFile) kan inte sammanslå dem till en enda körbar fil. Du distribuerar alltid en mapp med filer (eller omsluter dem i ett traditionellt installationsprogram som WiX eller Inno-installationsprogrammet). - Runtime-beroende – Windows App SDK-körningen måste finnas på användarens dator. Du måste antingen paketera installationsprogrammet för körning med din app eller använda fristående distribution (vilket avsevärt ökar utdatastorleken). Se Deploying the Windows App SDK runtime nedan.
- No package identity – Utan ett paketmanifest kan appen inte använda manifestbaserade Windows funktioner: inga automatiska uppdateringar via App Installer eller Store, ingen registrering av bakgrundsaktiviteter och inga filtypsassociationer eller anpassning av Start-menypanelen via paketmanifest. (Traditionella Win32-mekanismer som installationsskrivna registerposter och genvägar fungerar fortfarande.)
- No MSIX/package-identity Store submission – Den här distributionsmodellen har ingen paketidentitet; den är inte berättigad som en MSIX-överföring till Microsoft Store. (Du kan skicka ett traditionellt installationsprogram till Store via sökvägen till MSI- eller EXE-installationsprogrammet, men det är ett separat arbetsflöde från vad den här artikeln beskriver.)
Om dessa begränsningar är ett problem kan du överväga att paketera din app (rekommenderas för de flesta appar) eller paketera med extern plats för att lägga till paketidentitet utan en fullständig MSIX-konvertering.
Mer information om alla paketeringsalternativ finns i Fördelar och nackdelar med att paketera din app.
Om du väljer att packa upp en ny eller befintlig WinUI-app följer du dessa steg:
.csproj Leta reda på det första befintliga PropertyGroup-elementet i filen, som även innehåller OutputType, TargetFrameworkoch andra egenskaper.
- Lägg till
WindowsPackageTypeprojekt-egenskapen i det här PropertyGroup-elementet. Ange värdet tillNone.
<Project ...>
...
<PropertyGroup>
<WindowsPackageType>None</WindowsPackageType><!-- add this -->
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>
...
</PropertyGroup>
...
</Project>
Starta appen från Visual Studio (antingen Debugging eller Without Debugging) väljer du startprofilen Unpackaged från listrutan Start. Om profilen Package har valts visas ett distributionsfel i Visual Studio. Det här steget är inte nödvändigt om du startar programmet (.exe) från kommandoraden eller från Windows Utforskaren.
Bootstrapper-API:et
Genom att ange projektegenskapen <WindowsPackageType>None</WindowsPackageType> orsakar du att auto-initializer hittar och laddar en version av Windows App SDK som är mest lämplig för din app.
Om du har avancerade behov (till exempel anpassad felhantering eller för att läsa in en specifik version av Windows App SDK) kan du i stället anropa bootstrapper-API:et explicit. Mer information finns i Använd Windows App SDK runtime för appar som är paketerade med extern plats eller är opaketerade och Handledning: Använd bootstrapper-API:et i en app som är paketerad med extern plats eller är opaketerad som använder Windows App SDK.
Mer information om bootstrapper finns i Distributionsarkitektur och översikt för ramverksberoende appar.
Implementera Windows App SDK-körtidsmiljön
Uppackade WinUI 3-appar är beroende av Windows App SDK körning som installeras på användarens dator. Du har två alternativ för att säkerställa närvaron av körmiljön:
Option 1: Windows App SDK-runtime installationsprogram (.exe) (rekommenderas)
Inkludera Windows App SDK runtime-installationsprogrammet med din app. Installationsprogrammet för körning är en omdistribuerbar .exe som installerar nödvändiga Windows App SDK körningspaket. Ladda ned den från sidan Windows App SDK versioner och paketera den med ett eget installationsprogram eller installationsskript. Fullständig guide finns i Använd Windows App SDK runtime för appar paketerade med extern plats eller utan paket.
Användarna måste en gång köra runtime-installationsprogrammet. Efterföljande appuppdateringar kräver inte ominstallation av körningen om inte den nödvändiga Windows App SDK versionen ändras.
Alternativ 2: Fristående distribution
Ange <WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained> i projektfilen för att integrera Windows App SDK körmiljö direkt i appens utdatamapp. Detta tar bort körningsberoendet – användarna behöver inte installera något separat.
<PropertyGroup>
<WindowsPackageType>None</WindowsPackageType>
<WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained>
</PropertyGroup>
Avvägningen: utdatamappen är betydligt större (den fullständiga körtiden ingår), och varje appuppdatering har den fulla körtidsbelastningen. Använd det här alternativet för enkla distributionsscenarier eller när du inte kan styra vad som är installerat på måldatorn.
Distribuera opacketerade appar som använder Windows App SDK för den fullständiga referensen för körningsdistribution.
Exe-begränsning med en fil
Viktigt!
Icke-packeterade WinUI 3-appar kan inte publiceras som en ensamfil EXE. Den Windows App SDK körmiljön och flera WinUI 3-beroenden måste vara separata filer – .NET-funktionen för publicering av enstaka filer kan inte paketera dem i en körbar fil.
Om en distributionsupplevelse med en fil är viktig för ditt scenario bör du överväga följande alternativ:
- Använd MSIX-paketering – användarna får en enda installationsprogramupplevelse (App Installer hanterar alla filer) och du får Store-berättigande, paketidentitet och inbyggda uppdateringar
- Använd ett traditionellt installationsprogram (WiX, Inno-installationsprogrammet) – omslut utdatamappen i ett enda EXE-installationsprogram som extraherar och installerar alla nödvändiga filer transparent
-
Använd ett annat ramverk – WPF- och WinForms-appar med
dotnet publish --self-contained -p:PublishSingleFile=truecan skapa en EXE med en fil, även om vissa interna beroenden fortfarande kan extraheras vid körning
Distributionsaspekter för opackade appar
Uppackade WinUI 3-appar saknar paketidentitet, vilket innebär att de inte kan komma åt vissa Windows funktioner:
- Ingen automatisk uppdatering via App Installer eller Windows Store
- Ingen registrering av bakgrundsaktiviteter via paketmanifest
- Inga filtypsassociationer eller protokollhanterare via paketmanifest
- Ingen anpassning av Start-menyns panel via paketmanifest
Om du behöver dessa funktioner bör du överväga att paketera med externt ställe som en mellanväg som lägger till paketidentitet utan att kräva fullständig MSIX-konvertering.
→ Publicera din första Windows app för en fullständig översikt över distributionsalternativ för WinUI 3 och andra Windows appramverk.
Windows developer