Dela via


Skapa ett MSIX-paket eller -bunt med MakeAppx.exe

MakeAppx.exe skapar både apppaket (.msix eller .appx) och paketpaket för appar (.msixbundle eller .appxbundle). MakeAppx.exe extraherar även filer från ett apppaket eller paket och krypterar eller dekrypterar apppaket och paket. Det här verktyget ingår i Windows 10 SDK och kan användas från en kommandotolk eller en skriptfil.

Information om hur du använderMakeApp.exe för att paketera en skrivbordsapp finns i Paketera en skrivbordsapp manuellt.

Viktigt!

Om du använde Visual Studio för att utveckla din app rekommenderar vi att du använder Visual Studio-guiden för att skapa ditt apppaket. Mer information finns i Paketera en UWP-app med Visual Studio och Paketera en skrivbordsapp från källkod med Visual Studio.

Viktigt!

Observera att MakeAppx.exe inte skapar en apppaketuppladdningsfil (.appxupload eller .msixupload), vilket är den rekommenderade typen av giltigt apppaket för inlämningar till Partnercenter. Uppladdningsfilen för apppaketet skapas vanligtvis som en del av Visual Studio-paketeringsprocessen, även om den också kan skapas manuellt.

Använda MakeAppx.exe

Baserat på installationssökvägen för SDK:et är det här MakeAppx.exe finns på din Windows 10-dator:

  • C:\Program Files (x86)\Windows Kits\10\bin\<versionsnummer>\<arkitektur>\makeappx.exe

där <arkitektur> = x86, x64, arm, arm64 eller chpe. Alternativt kan den finnas i:

  • C:\Program Files (x86)\Windows Kits\10\App Certification Kit\makeappx.exe

MakeAppx.exe syntax och alternativ

Allmän MakeAppx.exe syntax:

MakeAppx <command> [options]      

I följande tabell beskrivs kommandona för MakeAppx.exe.

Kommando Beskrivning
paket Skapar ett paket.
uppacka Extraherar alla filer i det angivna paketet till den angivna utdatakatalogen.
bunt Skapar ett paket.
åtskilja Packar upp alla paket till en underkatalog under den angivna utdataförväg, namngiven efter buntens eller paketets fullständiga namn.
kryptera Skapar ett krypterat app-paket eller paket från indatapaketet i det angivna utdatapaketet.
dekryptera Skapar ett dekrypterat apppaket eller bunt från ingångspaketet/-bunten till det angivna utgångspaketet/-bunten.

Den här listan med alternativ gäller för alla kommandon:

Alternativ Beskrivning
/d Anger indata-, utdata- eller innehållskatalogen.
/l Används för lokaliserade paket. Standardvalideringen stöter på problem med lokaliserade paket. De här alternativen inaktiverar endast den specifika valideringen, utan att kräva att all validering inaktiveras.
/kf Krypterar eller dekrypterar paketet eller bunt med hjälp av nyckeln från den angivna nyckelfilen. Detta kan inte användas med /kt.
/Kt Krypterar eller dekrypterar paketet eller bunten med hjälp av den globala testnyckeln. Detta kan inte användas med /kf.
/Nej Förhindrar en överskrivning av utdatafilen om den finns. Om du inte anger det här alternativet eller /o-alternativet tillfrågas användaren om de vill skriva över filen.
/Nv Hoppar över semantisk validering. Om du inte anger det här alternativet utför verktyget en fullständig validering av paketet.
/o Skriver över utdatafilen om den finns. Om du inte anger det här alternativet eller alternativet /no tillfrågas användaren om de vill skriva över filen.
/p Anger app-paketet eller bunten.
/v Aktiverar utförliga loggningsutdata till konsolen.
/? Visar hjälptext.

Följande lista innehåller möjliga argument:

Argument Beskrivning
<namn på utdatapaket> Namnet på det paket som skapats. Det här är filnamnet som läggs till med .msix eller .appx.
<namn på krypterat utdatapaket> Namnet på det krypterade paket som skapats. Det här är filnamnet som läggs till med .emsix eller .eappx.
<namn på inmatningspaket> Namnet på paketet. Det här är filnamnet som läggs till med .msix eller .appx.
<namn på krypterat indatapaket> Namnet på det krypterade paketet. Det här är filnamnet som läggs till med .emsix eller .eappx.
<namn på utdatapaket> Namnet på paketet som skapades. Det här är filnamnet som läggs till med .msixbundle eller .appxbundle.
<namn på krypterat utdatapaket> Namnet på det krypterade paket som skapats. Det här är filnamnet som läggs till med .emsixbundle eller .eappxbundle.
<namn på indatapaket> Namnet på paketet. Det här är filnamnet som läggs till med .msixbundle eller .appxbundle.
<namn på krypterat indatapaket> Namnet på det krypterade paketet. Det här är filnamnet som läggs till med .emsixbundle eller .eappxbundle.
<innehållskatalog> Sökväg för apppaketet eller paketbuntens innehåll.
<mappningsfil> Filnamn som anger paketkällan och målet.
<utdatakatalog> Sökväg till katalogen för utdatapaket och buntar.
<nyckelfil> Namnet på filen som innehåller en nyckel för kryptering eller dekryptering.
<algoritm-ID> Algoritmer som används när du skapar en blockkarta. Giltiga algoritmer är: SHA256 (standard), SHA384, SHA512.

Skapa ett apppaket

Ett apppaket är en fullständig uppsättning av appens filer som paketeras i en .msix- eller .appx-paketfil. Om du vill skapa ett apppaket med hjälp av paketkommandot måste du ange antingen en innehållskatalog eller en mappningsfil för paketets plats. Du kan också kryptera ett paket när du skapar det. Om du vill kryptera paketet måste du använda /ep och ange om du använder en nyckelfil (/kf) eller den globala testnyckeln (/kt). Mer information om hur du skapar ett krypterat paket finns i Kryptera eller dekryptera ett paket eller paket.

Alternativ som är specifika för packkommandot :

Alternativ Beskrivning
/f Specificerar mappningsfilen.
/h Anger den hash-algoritm som ska användas när blockkartan skapas. Detta kan bara användas med pack-kommandot. Giltiga algoritmer är: SHA256 (standard), SHA384, SHA512.
/m Anger sökvägen till ett indataappmanifest som ska användas som grund för att generera utdataapppaketet eller resurspaketets manifest. När du använder det här alternativet måste du också använda /f och inkludera ett [ResourceMetadata]-avsnitt i mappningsfilen för att ange de resursdimensioner som ska ingå i det genererade manifestet.
/Nc Förhindrar komprimering av paketfilerna. Som standard komprimeras filer baserat på identifierad filtyp.
/r Skapar ett resurspaket. Detta måste användas med /m och innebär användning av alternativet /l.

I följande användningsexempel visas några möjliga syntaxalternativ för packkommandot :

MakeAppx pack [options] /d <content directory> /p <output package name>
MakeAppx pack [options] /f <mapping file> /p <output package name>
MakeAppx pack [options] /m <app package manifest> /f <mapping file> /p <output package name>
MakeAppx pack [options] /r /m <app package manifest> /f <mapping file> /p <output package name>
MakeAppx pack [options] /d <content directory> /ep <encrypted output package name> /kf <key file>
MakeAppx pack [options] /d <content directory> /ep <encrypted output package name> /kt

Följande visar kommandoradsexempel för packkommandot :

MakeAppx pack /v /h SHA256 /d "C:\My Files" /p MyPackage.msix
MakeAppx pack /v /o /f MyMapping.txt /p MyPackage.msix
MakeAppx pack /m "MyApp\AppxManifest.xml" /f MyMapping.txt /p AppPackage.msix
MakeAppx pack /r /m "MyApp\AppxManifest.xml" /f MyMapping.txt /p ResourcePackage.msix
MakeAppx pack /v /h SHA256 /d "C:\My Files" /ep MyPackage.emsix /kf MyKeyFile.txt
MakeAppx pack /v /h SHA256 /d "C:\My Files" /ep MyPackage.emsix /kt

Skapa ett apppaket

Ett apppaket liknar ett apppaket, men ett paket kan minska storleken på den app som användarna laddar ned. Apppaket är till hjälp för språkspecifika tillgångar, varierande bildskalningstillgångar eller resurser som till exempel gäller för specifika versioner av Microsoft DirectX. På samma sätt som när du skapar ett krypterat apppaket kan du även kryptera apppaketet när du paketar det. Om du vill kryptera apppaketet använder du alternativet /ep och anger om du använder en nyckelfil (/kf) eller den globala testnyckeln (/kt). Mer information om hur du skapar ett krypterat paket finns i Kryptera eller dekryptera ett paket eller paket.

Alternativ som är specifika för paketkommandot :

Alternativ Beskrivning
/Bv Anger versionsnumret för paketet. Versionsnumret måste vara i fyra delar avgränsade med punkter i formatet: <Större>.<Mindre>.<Bygg>.<Revision>.
/f Specificerar mappningsfilen.

Observera att om paketversionen inte har angetts eller om den är inställd på "0.0.0.0" skapas paketet med aktuell datum-tid.

I följande användningsexempel visas några möjliga syntaxalternativ för paketkommandot :

MakeAppx bundle [options] /d <content directory> /p <output bundle name>
MakeAppx bundle [options] /f <mapping file> /p <output bundle name>
MakeAppx bundle [options] /d <content directory> /ep <encrypted output bundle name> /kf MyKeyFile.txt
MakeAppx bundle [options] /f <mapping file> /ep <encrypted output bundle name> /kt

Följande block innehåller exempel på paketkommandot :

MakeAppx bundle /v /d "C:\My Files" /p MyBundle.msixbundle
MakeAppx bundle /v /o /bv 1.0.1.2096 /f MyMapping.txt /p MyBundle.msixbundle
MakeAppx bundle /v /o /bv 1.0.1.2096 /f MyMapping.txt /ep MyBundle.emsixbundle /kf MyKeyFile.txt
MakeAppx bundle /v /o /bv 1.0.1.2096 /f MyMapping.txt /ep MyBundle.emsixbundle /kt

Extrahera filer från ett paket eller bunt

Förutom att paketera och bunta ihop appar kan MakeAppx.exe också packa upp eller bunta upp befintliga paket. Du måste ange innehållskatalogen som mål för de extraherade filerna. Om du försöker extrahera filer från ett krypterat paket eller paket kan du dekryptera och extrahera filerna samtidigt med alternativet /ep och ange om de ska dekrypteras med hjälp av en nyckelfil (/kf) eller den globala testnyckeln (/kt). Mer information om hur du dekrypterar ett paket eller paket finns i Kryptera eller dekryptera ett paket eller paket.

Alternativ som är specifika för att packa upp och separera kommandon:

Alternativ Beskrivning
/Nd Utför inte dekryptering när man packar upp eller separerar ett paket eller en bunt.
/pfn Packar upp/separerar alla filer till en underkatalog under den angivna utdatasökvägen, och namnges efter paketets eller samlingens fullständiga namn.

I följande användningsexempel visas några möjliga syntaxalternativ för kommandona packa upp och separera :

MakeAppx unpack [options] /p <input package name> /d <output directory>
MakeAppx unpack [options] /ep <encrypted input package name> /d <output directory> /kf <key file>
MakeAppx unpack [options] /ep <encrypted input package name> /d <output directory> /kt

MakeAppx unbundle [options] /p <input bundle name> /d <output directory>
MakeAppx unbundle [options] /ep <encrypted input bundle name> /d <output directory> /kf <key file>
MakeAppx unbundle [options] /ep <encrypted input bundle name> /d <output directory> /kt

Följande block innehåller exempel på hur du använder kommandona packa upp och bunta upp:

MakeAppx unpack /v /p MyPackage.msix /d "C:\My Files"
MakeAppx unpack /v /ep MyPackage.emsix /d "C:\My Files" /kf MyKeyFile.txt
MakeAppx unpack /v /ep MyPackage.emsix /d "C:\My Files" /kt

MakeAppx unbundle /v /p MyBundle.msixbundle /d "C:\My Files"
MakeAppx unbundle /v /ep MyBundle.emsixbundle /d "C:\My Files" /kf MyKeyFile.txt
MakeAppx unbundle /v /ep MyBundle.emsixbundle /d "C:\My Files" /kt

Kryptera eller dekryptera ett paket eller bunt

Verktyget MakeAppx.exe kan också kryptera eller dekryptera ett befintligt paket eller samling. Du måste bara ange paketnamnet, utdatapaketnamnet och om kryptering eller dekryptering ska använda en nyckelfil (/kf) eller den globala testnyckeln (/kt).

Kryptering och dekryptering är inte tillgängliga via Visual Studio-paketeringsguiden.

Alternativ som är specifika för att kryptera och dekryptera kommandon:

Alternativ Beskrivning
/Ep Anger ett krypterat apppaket eller paket.

I följande användningsexempel visas några möjliga syntaxalternativ för kommandona kryptera och dekryptera :

MakeAppx encrypt [options] /p <package name> /ep <output package name> /kf <key file>
MakeAppx encrypt [options] /p <package name> /ep <output package name> /kt

MakeAppx decrypt [options] /ep <package name> /p <output package name> /kf <key file>
MakeAppx decrypt [options] /ep <package name> /p <output package name> /kt

Följande block innehåller exempel på hur du använder kommandona kryptera och dekryptera :

MakeAppx.exe encrypt /p MyPackage.msix /ep MyEncryptedPackage.emsix /kt
MakeAppx.exe encrypt /p MyPackage.msix /ep MyEncryptedPackage.emsix /kf MyKeyFile.txt

MakeAppx.exe decrypt /p MyPackage.msix /ep MyEncryptedPackage.emsix /kt
MakeAppx.exe decrypt p MyPackage.msix /ep MyEncryptedPackage.emsix /kf MyKeyFile.txt

Nyckelfiler

Nyckelfiler måste börja med en rad som innehåller strängen "[Nycklar]" följt av rader som beskriver de nycklar som varje paket ska krypteras med. Varje nyckel representeras av ett par strängar inom citattecken, avgränsade med blanksteg eller flikar. Den första strängen representerar det base64-kodade nyckel-ID:t på 32 byte och den andra representerar den base64-kodade krypteringsnyckeln på 32 byte. En nyckelfil ska vara en enkel textfil.

Exempel på en nyckelfil:

[Keys]
"OWVwSzliRGY1VWt1ODk4N1Q4R2Vqc04zMzIzNnlUREU="    "MjNFTlFhZGRGZEY2YnVxMTBocjd6THdOdk9pZkpvelc="

Kartfiler

Mappningsfiler måste börja med en rad som innehåller strängen "[Files]" följt av rader som beskriver de filer som ska läggas till i paketet. Varje fil beskrivs av ett par filvägar inom citattecken, avgränsade med mellanrum eller flikar. Varje fil representerar källan (på disken) och målet (i paketet). En mappningsfil ska vara en enkel textfil.

Exempel på en mappningsfil (utan alternativet /m):

[Files]
"C:\MyApp\StartPage.html"               "default.html"
"C:\Program Files (x86)\example.txt"    "misc\example.txt"
"\\MyServer\path\icon.png"              "icon.png"
"my app files\readme.txt"               "my app files\readme.txt"
"CustomManifest.xml"                    "AppxManifest.xml"

När du använder en mappningsfil kan du välja om du vill använda alternativet /m. Med alternativet /m kan användaren ange resursmetadata i mappningsfilen som ska ingå i det genererade manifestet. Om du använder alternativet /m måste mappningsfilen innehålla ett avsnitt som börjar med raden "[ResourceMetadata]", följt av rader som anger "ResourceDimensions" och "ResourceId". Det är möjligt att ett apppaket innehåller flera "ResourceDimensions", men det kan bara finnas ett "ResourceId".

Exempel på en mappningsfil (med alternativet /m):

[ResourceMetadata]
"ResourceDimensions"                    "language-en-us"
"ResourceId"                            "English"

[Files]
"images\en-us\logo.png"                 "en-us\logo.png"
"en-us.pri"                             "resources.pri"

Semantisk validering som utförs av MakeAppx.exe

MakeAppx.exe utför begränsad sematisk validering som är utformad för att fånga de vanligaste distributionsfelen och se till att apppaketet är giltigt. Se alternativet /nv om du vill hoppa över valideringen när du använderMakeAppx.exe.

Den här verifieringen säkerställer att:

  • Alla filer som refereras i paketmanifestet ingår i apppaketet.
  • Ett program har inte två identiska nycklar.
  • Ett program registreras inte för ett förbjudet protokoll från den här listan: SMB, FILE, MS-WWA-WEB, MS-WWA.

Detta är inte en fullständig semantisk validering eftersom den bara är utformad för att fånga vanliga fel. Paket som skapats av MakeAppx.exe är inte garanterade att vara installerbara.