Not
Å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.
Det här avsnittet beskriver de typer av skrivbordsappar som du kan skapa ett Windows-apppaket för, tillsammans med vissa operativsystemsbeteenden och andra detaljer som är viktiga att känna till. Vi går in på information om följande objekt (som vi ser beror det specifika beteendet på typen av app):
- Appens installationsplats och arbetskatalog (som kan skilja sig från vad din app har antagit tidigare).
- Operativsystemets filsystem och registerbeteende .
- Avinstallation.
Typer av skrivbordsapp
Det finns två typer av skrivbordsappar som du kan skapa och paketera. Du deklarerar appens typ i dess apppaketmanifest med hjälp av attributet uap10:RuntimeBehavior för programelementet :
- En typ innehåller både WinUI 3-appar (som använder Windows App SDK) och Desktop Bridge-appar (Centennial). Deklarerad med
uap10:RuntimeBehavior="packagedClassicApp". - Den andra typen representerar andra typer av Win32-appar, inklusive appar som paketeras med extern plats. Deklarerad med
uap10:RuntimeBehavior="win32App".
UWP-apparuap10:RuntimeBehavior="windowsApp" (Universal Windows Platform) () är också paketerade, men det här avsnittet handlar inte om dem.
Och sedan avgör attributet uap10:TrustLevel (av samma programelement ) om din paketerade apps process körs i en appcontainer eller inte.
- En fullständig förtroendeapp . Deklarerad med
uap10:TrustLevel="mediumIL". - En appContainer-app. Deklarerad med
uap10:TrustLevel="appContainer". Körs i en lätt appcontainer (och isoleras därför med hjälp av filsystem och registervirtualisering). Mer information finns i MSIX-appContainer-appar.
Viktigt!
Mer information, beroenden och kapacitetskrav finns i dokumentationen för dessa två attribut i Programmet. Se också uap10 introducerades i Windows 10, version 2004 (10.0; Build 19041).
Syftet med paketering och appcontainrar
Syftet med att paketera din app är att bevilja den paketidentitet under körning. Paketidentitet krävs för vissa Windows-funktioner (se Funktioner som kräver paketidentitet). Du kan paketera alla kombinationer av apptyper som beskrivs ovan (och därmed dra nytta av paketidentitet).
Men ett viktigt mål för en appContainer-app är att separera apptillståndet från systemtillståndet så mycket som möjligt, samtidigt som kompatibiliteten med andra appar bibehålls. Windows åstadkommer detta genom att identifiera och omdirigera vissa ändringar som görs i filsystemet och registret vid körning (kallas virtualisering). Vi kommer att ta upp när ett avsnitt endast gäller för virtualiserade appar.
Installation
Apppaket installeras per användare i stället för systemomfattande. Standardplatsen för nya paket på en ny dator är under C:\Program Files\WindowsApps\<package_full_name>, med det körbara namnet app_name.exe. Men paket kan installeras på andra platser; Till exempel använder Visual Studio Start-kommandon projektets $(OutDir).
Efter distributionen markeras paketfilerna som skrivskyddade och är kraftigt låsta av operativsystemet (OS). Windows förhindrar att appar startas om dessa filer manipuleras.
Platsen C:\Program Files\WindowsApps är det som kallas PackageVolume. Den platsen är standardplatsen PackageVolume som Windows använder; men du kan skapa en PackageVolume på valfri enhet och på valfri sökväg. Dessutom installeras inte alla paket i en PackageVolume (se Visual Studio-exemplet ovan).
Filsystem
Operativsystemet stöder olika nivåer av filsystemåtgärder för paketerade skrivbordsappar, beroende på mappplatsen.
Optimerad för din enhet
För att undvika duplicering av filer (för att optimera för diskutrymme och minska den bandbredd som krävs vid nedladdning av filer) använder operativsystemet enkel lagring och hård länkning av filer. När en användare laddar ned ett MSIX-paket används det AppxManifest.xml för att avgöra om data som ingår i paketet redan finns på disken från en tidigare paketinstallation. Om samma fil finns i flera MSIX-paket lagrar operativsystemet endast den delade filen på disk en gång och skapar hårda länkar från båda paketen till den delade filen. Eftersom filer laddas ned i 64 KB-block, även om en procentandel av en fil redan finns på disken, laddas endast den del som är annorlunda ner. Det minskar den bandbredd som används för nedladdning.
AppData-åtgärder i Windows 10, version 1903 och senare
Det här avsnittet gäller endast virtualiserade appar.
Alla nyligen skapade filer och mappar i användarens mapp (till exempel AppData) skrivs C:\Users\<user_name>\AppData till en privat plats per användare och per app, men sammanfogas vid körning för att visas på den verkliga AppData platsen. Det tillåter viss grad av tillståndsseparation för artefakter som endast används av själva appen. vilket gör att systemet kan rensa filerna när appen avinstalleras.
Ändringar av befintliga filer under användarens mapp tillåts AppData för att ge en högre grad av kompatibilitet och interaktivitet mellan appar och operativsystemet. Det minskar systemets "rot" eftersom operativsystemet är medvetet om varje fil- eller katalogändring som görs av en app. Tillståndsseparation gör det också möjligt för paketerade skrivbordsappar att fortsätta där en uppackad version av samma app slutade. Observera att operativsystemet inte stöder en virtuell filsystemmapp (VFS) för användarens AppData mapp.
AppData-åtgärder på operativsystem som är tidigare än Windows 10, version 1903
Det här avsnittet gäller endast virtualiserade appar.
Alla skrivningar till användarens AppData mapp (till exempel C:\Users\<user_name>\AppData)– inklusive skapa, ta bort och uppdatera – kopieras vid skrivning till en privat plats per användare och per app. Det skapar illusionen att den paketerade appen redigerar det verkliga AppData när den faktiskt ändrar en privat kopia. Genom att omdirigera skrivningar på det sättet kan systemet spåra alla filändringar som görs av appen. Det gör att systemet kan rensa filerna när appen avinstalleras, vilket minskar systemets "röta" och ger en bättre appborttagningsupplevelse för användaren.
Arbetskatalog och programfiler
Det här avsnittet gäller endast virtualiserade appar.
Förutom omdirigering AppDatasammanfogas Windows välkända mappar (System32, Program Files (x86)osv.) dynamiskt med motsvarande kataloger i apppaketet. Varje paket innehåller en mapp med namnet VFS i roten. Alla läsningar av kataloger eller filer i VFS katalogen sammanfogas vid körning med sina respektive ursprungliga motsvarigheter. En app kan till exempel innehålla C:\Program Files\WindowsApps\<package_full_name>\VFS\SystemX86\vc10.dll som en del av sitt apppaket, men filen verkar vara installerad på C:\Windows\System32\vc10.dll. Det upprätthåller kompatibilitet med skrivbordsappar som förväntar sig att filer ska finnas på platser som inte är paket.
Skrivningar till filer/mappar i apppaketet tillåts inte. Skrivningar till filer och mappar som inte ingår i paketet ignoreras av operativsystemet och tillåts så länge användaren har behörighet.
Vanliga filsystemåtgärder
Den här korta referenstabellen visar vanliga filsystemåtgärder och hur operativsystemet hanterar dem.
| Verksamhet | Resultat | Exempel |
|---|---|---|
| Läsa eller räkna upp en välkänd Windows-fil eller -mapp | En dynamisk sammanslagning av C:\Program Files\<package_full_name>\VFS\<well_known_folder> med den lokala systemmotsvarigheten. |
Läsning C:\Windows\System32 returnerar innehållet i C:\Windows\System32 plus innehållet i C:\Program Files\WindowsApps\<package_full_name>\VFS\SystemX86. |
Skriv under AppData |
Windows 10, version 1903 och senare: Nya filer och mappar som skapats under följande kataloger omdirigeras till en privat plats per användare och paket:
AppData platsen. Om filen öppnas från den verkliga AppData platsen sker ingen virtualisering för filen. Filborttagningar under AppData tillåts om användaren har behörighet.Tidigare än Windows 10 version 1903: Kopiera vid skrivning till en plats per användare och per app. |
AppData är vanligtvis C:\Users\<user_name>\AppData. |
| Skriv inuti paketet | Inte tillåtet. Paketet är skrivskyddat. | Skrivningar under C:\Program Files\WindowsApps\<package_full_name> tillåts inte. |
| Skriva utanför paketet | Tillåts om användaren har behörigheter. | En skrivning till C:\Windows\System32\foo.dll tillåts om paketet inte innehåller C:\Program Files\WindowsApps\<package_full_name>\VFS\SystemX86\foo.dlloch användaren har behörighet. |
Paketerade VFS-platser
Det här avsnittet gäller endast virtualiserade appar.
Den här tabellen visar var filer som skickas som en del av paketet läggs över i systemet för appen. Din app uppfattar dessa filer som på de listade systemplatserna när de i själva verket befinner sig på de omdirigerade platserna i C:\Program Files\WindowsApps\<package_full_name>\VFS.
FOLDERID-platserna hämtas från KNOWNFOLDERID-konstanterna.
| Systemlokalisering | Omdirigerad plats (under [<package_root>]\VFS) | Giltigt för arkitekturer |
|---|---|---|
| FOLDERID_SystemX86 | SystemX86 |
x86, amd64 |
| FOLDERID_System | SystemX64 |
amd64 |
| FOLDERID_ProgramFilesX86 | ProgramFilesX86 |
x86, amd6 |
| FOLDERID_ProgramFilesX64 | ProgramFilesX64 |
amd64 |
| FOLDERID_ProgramFilesCommonX86 | ProgramFilesCommonX86 |
x86, amd64 |
| FOLDERID_ProgramFilesCommonX64 | ProgramFilesCommonX64 |
amd64 |
| FOLDERID_Windows | Windows |
x86, amd64 |
| FOLDERID_ProgramData | Gemensam AppData |
x86, amd64 |
| FOLDERID_System\catroot | AppVSystem32Catroot |
x86, amd64 |
| FOLDERID_System\catroot2 | AppVSystem32Catroot2 |
x86, amd64 |
| FOLDERID_System\drivers\etc | AppVSystem32DriversEtc |
x86, amd64 |
| FOLDERID_System\driverstore | AppVSystem32Driverstore |
x86, amd64 |
| FOLDERID_System\logfiles | AppVSystem32Logfiles |
x86, amd64 |
| FOLDERID_System\spool | AppVSystem32Spool |
x86, amd64 |
Registersystem
Det här avsnittet (och dess underavsnitt) gäller endast för virtualiserade appar.
Apppaket innehåller en registry.dat fil som fungerar som den logiska (virtuella) motsvarigheten till HKLM\Software i det verkliga registret. Vid körning sammanfogar det virtuella registret innehållet i den hive-filen till den interna systemdatafilen för att ge en enda vy över båda. Om registry.dat till exempel innehåller en enda nyckel Foo, så verkar en läsning av HKLM\Software vid körning också innehålla Foo (förutom alla inbyggda systemnycklar).
Även om MSIX-paket innehåller HKLM - och HKCU-nycklar behandlas de på olika sätt. Endast nycklar under HKLM\Software ingår i paketet. nycklar under HKCU eller andra delar av registret är inte. Skrivningar till nycklar eller värden i paketet tillåts inte. Skrivningar till nycklar eller värden som inte ingår i paketet tillåts så länge användaren har behörighet.
Alla skrivningar under HKCU kopieras vid skrivning till en privat plats per användare och per app. Traditionellt sett kan avinstallerare inte rensa HKEY_CURRENT_USER eftersom registerdata för utloggade användare är omonterade och otillgängliga.
Alla skrivningar sparas under paketuppgradering och tas endast bort när appen tas bort helt.
Vanliga registeråtgärder
Det mesta av det här avsnittet gäller endast virtualiserade appar.
Den här korta referenstabellen visar vanliga registeråtgärder och hur operativsystemet hanterar dem.
| Verksamhet | Resultat | Exempel |
|---|---|---|
| Läsa eller räkna upp HKLM\Software | En dynamisk sammanslagning av paketdatafilen med den lokala systemmotsvarigheten. | Om registry.dat innehåller en enda nyckel Foo, visar en läsning av HKLM\Software vid körning innehållet i både HKLM\Software och HKLM\Software\Foo. |
| Skriver under HKCU | Kopierade vid skrivning till en privat plats per användare och per app. | Samma som AppData för filer. |
| Skrivningar i paketet. | Inte tillåtet. Paketet är skrivskyddat. | Skrivningar under HKLM\Software tillåts inte om motsvarande nyckel/värde finns i paketkupan. |
| Skriver utanför paketet | Ignoreras av operativsystemet. Tillåts om användaren har behörigheter. | Skrivningar under HKLM\Software tillåts så länge en motsvarande nyckel/värde inte finns i paketdatafilen och användaren har rätt åtkomstbehörigheter. |
Avinstallation
Det här avsnittet gäller endast virtualiserade appar.
När ett paket avinstalleras av användaren tas alla filer och mappar som finns under C:\Program Files\WindowsApps\<package_full_name> bort, samt eventuella omdirigerade skrivningar till AppData eller registret som hämtades under paketeringsprocessen.