Erstellen eines MSIX-Pakets oder -Bündels mit MakeAppx.exe

MakeAppx.exe erstellt sowohl App-Pakete (.msix oder .appx) als auch App-Bündel (.msixbundle oder .appxbundle). MakeAppx.exe extrahiert auch Dateien aus einem App-Paket oder -Bündel und verschlüsselt oder entschlüsselt App-Pakete und -Bündel. Dieses Tool ist im Windows 10 SDK enthalten und kann über eine Eingabeaufforderung oder eine Skriptdatei verwendet werden.

Informationen zur Verwendung von MakeApp.exe zum Verpacken einer Desktop-App finden Sie unter Eine Desktop-App manuell verpacken.

Wichtig

Wenn Sie Ihre App mit Visual Studio entwickelt haben, sollten Sie den Visual Studio-Assistenten verwenden, um Ihr App-Paket zu erstellen. Weitere Informationen finden Sie unter Eine UWP-App mit Visual Studio verpacken und Eine Desktop-App vom Quellcode aus mit Visual Studio verpacken.

Wichtig

Beachten Sie, dass MakeAppx.exe keine App-Paket-Upload-Datei (.appxupload oder .msixupload) erstellt, was der empfohlene Typ des gültigen App-Pakets für Übermittlungen an Partner Center ist. Die Datei zum Hochladen des App-Pakets wird in der Regel als Teil des Visual Studio-Paketpaketpakets erstellt, obwohl sie auch manuell erstellt werden kann.

MakeAppx.exe verwenden

Abhängig vom Installationspfad des SDK befindet sich MakeAppx.exe an folgenden Speicherorten auf Ihrem Windows 10-PC:

  • C:\Programmdateien (x86)\Windows Kits\10\Intervall\<Buildnummer>\<Architektur>\makeappx.exe,

wobei <Architektur> x86, x64, arm, arm64 oder chpe ist. Alternativ kann sie sich in folgendem Bereich befinden:

  • C:\Programme (x86)\Windows Kits\10\App-Zertifizierungs-Kit\makeappx.exe

MakeAppx.exe – Syntax und Optionen

Allgemeine MakeAppx.exe-Syntax:

MakeAppx <command> [options]      

Die folgende Tabelle enthält die Befehle für MakeAppx.exe.

Befehl Beschreibung
pack Erstellen eines Pakets
unpack Extrahiert alle Dateien des angegebenen Pakets in das angegebene Ausgabeverzeichnis.
bundle Erstellen eines Bundles.
unbundle Entpackt alle Pakete in ein Unterverzeichnis unter dem angegebenen Ausgabepfad, das nach dem vollständigen Namen des Bündels oder Pakets benannt ist.
encrypt Erzeugt ein verschlüsseltes App-Paket oder -bündel aus dem Eingabepaket/-bündel am angegebenen Ausgabepaket/-bündel.
decrypt Erzeugt ein entschlüsseltes App-Paket oder -bündel aus dem Eingabe-App-Paket/-Bündel am angegebenen Ausgabepaket/-bündel.

Diese Liste der Optionen gilt für sämtliche Befehle:

Option Beschreibung
/d Gibt das Eingabe-, Ausgabe- oder Inhaltsverzeichnis an.
/l Wird für lokalisierte Pakete verwendet. Bei lokalisierten Paketen erfolgt eine Standardüberprüfung. Mit dieser Option wird nur diese spezielle Überprüfung deaktiviert, ohne dass alle Überprüfungen deaktiviert werden müssen.
/kf Verschlüsselt oder entschlüsselt das Paket oder Bündel mit dem Schlüssel aus der angegebenen Schlüsseldatei. Diese Funktion kann nicht mit /kt verwendet werden.
/kt Verschlüsselt oder entschlüsselt das Paket oder Bundle mit dem globalen Testschlüssel. Diese Funktion kann nicht mit /kf verwendet werden.
/no Verhindert das Überschreiben der Ausgabedatei (sofern vorhanden). Wenn Sie diese Option oder die Option /o nicht angeben, wird der Benutzer gefragt, ob er die Datei überschreiben möchte.
/nv Überspringt die semantische Überprüfung. Wenn Sie diese Option nicht angeben, führt das Tool eine vollständige Überprüfung des Pakets durch.
/o Überschreibt die Ausgabedatei (sofern vorhanden). Wenn Sie diese Option oder die Option /no nicht angeben, wird der Benutzer gefragt, ob er die Datei überschreiben möchte.
/p Gibt das App-Paket oder -Bündel an.
/v Aktiviert die ausführliche Protokollierungsausgabe auf der Konsole.
/? Zeigt Hilfetext an.

Die folgende Liste enthält mögliche Argumente:

Argument Beschreibung
<Ausgabepaketname> Der Name des erstellten Pakets. Dies ist der Dateiname mit der Endung .msix oder .appx.
<Name des verschlüsselten Ausgabepakets> Der Name des erstellten verschlüsselten Pakets. Dies ist der Dateiname mit der Endung .emsix oder .eappx.
<Eingabepaketname> Der Name des Pakets. Dies ist der Dateiname mit der Endung .msix oder .appx.
<Name des verschlüsselten Eingabepakets> Der Name des verschlüsselten Pakets. Dies ist der Dateiname mit der Endung .emsix oder .eappx.
<Ausgabebündelname> Der Name des erstellten Bündels. Dies ist der Dateiname mit der Endung .msixbundle oder .appxbundle.
<Name des verschlüsselten Ausgabebündels> Der Name des erstellten verschlüsselten Bündels. Dies ist der Dateiname mit der Endung .emsixbundle oder .eappxbundle.
<Eingabebündelname> Der Name des Bündels. Dies ist der Dateiname mit der Endung .msixbundle oder .appxbundle.
<Name des verschlüsselten Eingabebündels> Der Name des verschlüsselten Bündels. Dies ist der Dateiname mit der Endung .emsixbundle oder .eappxbundle.
<Inhaltsverzeichnis> Pfad für das App-Paket- oder -Bündel-Inhalt.
<Im Speicher abgebildete Datei> Dateiname, der die Quelle und das Ziel des Pakets angibt.
<Ausgabeverzeichnis> Pfad zum Verzeichnis für Ausgabepakete und -bündel.
<Schlüsseldatei> Name der Datei, die einen Schlüssel für die Verschlüsselung oder Entschlüsselung enthält.
<Algorithmus-ID> Algorithmen, die beim Erstellen einer Blockzuordnung verwendet werden. Zu den gültigen Algorithmen gehören: SHA256 (Standard), SHA384 und SHA512.

Erstellen eines App-Pakets

Ein App-Paket ist ein vollständiger Satz der App-Dateien, die in eine MSIX- oder APPX-Paketdatei verpackt sind. Um ein App-Paket mithilfe des Befehls Verpacken zu erstellen, müssen Sie entweder ein Inhaltsverzeichnis oder eine Zuordnungsdatei für den Speicherort des Pakets angeben. Sie können ein Paket auch beim Erstellen verschlüsseln. Wenn Sie das Paket verschlüsseln wollen, müssen Sie /ep verwenden und angeben, ob Sie eine Schlüsseldatei (/kf) oder den globalen Testschlüssel (/kt) verwenden wollen. Weitere Informationen zum Erstellen eines verschlüsselten Pakets finden Sie unter Verschlüsseln oder Entschlüsseln eines Pakets oder Bündels.

Spezifische Optionen für den Packbefehl:

Option Beschreibung
/f Gibt die Zuordnungsdatei an.
/h Gibt den Hashalgorithmus an, der beim Erstellen der Blockzuordnung verwendet werden soll. Dies kann nur mit dem Packbefehl verwendet werden. Zu den gültigen Algorithmen gehören: SHA256 (Standard), SHA384 und SHA512.
/m Gibt den Pfad zu einem Input-App-Manifest an, das als Grundlage für die Erstellung des Manifests des Output-App-Pakets oder des Ressourcenpakets verwendet wird. Wenn Sie diese Option verwenden, müssen Sie auch /f verwenden und einen [ResourceMetadata]-Abschnitt in die Zuordnungsdatei mitaufnehmen, um die Ressourcendimensionen anzugeben, die in das generierte Manifest aufgenommen werden sollen.
/nc Verhindert die Komprimierung der Paketdateien. Standardmäßig werden Dateien anhand des erkannten Dateityps komprimiert.
/r Erstellt ein Ressourcenpaket. Diese Option muss zusammen mit /m verwendet werden und setzt die Verwendung der Option /l voraus.

Die folgenden Verwendungsbeispiele zeigen einige mögliche Syntaxoptionen für den Packbefehl:

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

Im Folgenden finden Sie Befehlszeilen-Beispiele für den Packbefehl:

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

Erstellen eines App-Bündels

Ein App-Bundle ähnelt einem App-Paket, aber ein Bundle kann die Größe der App, die die Benutzer herunterladen, reduzieren. App-Bundles sind hilfreich für sprachspezifische Assets, für unterschiedliche Bildgrößen oder für Ressourcen, die sich zum Beispiel auf bestimmte Versionen von Microsoft DirectX beziehen. Ähnlich wie bei der Erstellung eines verschlüsselten App-Pakets können Sie auch das App-Bündel verschlüsseln, während Sie es bündeln. Um das App-Bundle zu verschlüsseln, verwenden Sie die Option /ep und geben Sie an, ob Sie eine Schlüsseldatei (/kf) oder den globalen Testschlüssel (/kt) verwenden. Weitere Informationen zum Erstellen eines verschlüsselten Bündels finden Sie unter Verschlüsseln oder Entschlüsseln eines Pakets oder Bündels.

Optionen, die für den Bündel-Befehl spezifisch sind:

Option Beschreibung
/bv Gibt die Versionsnummer des Bündels an. Die Versionsnummer muss in vier Teilen durch Punkte in der Form getrennt sein: <Haupt>.<Neben>.<Erstellt>.<Überarbeitet>.
/f Gibt die Zuordnungsdatei an.

Wird die Bündel-Version nicht angegeben oder wurde auf „0.0.0.0“ gesetzt, wird das Bündel mit dem aktuellen Datum bzw. der aktuellen Uhrzeit erstellt.

Die folgenden Verwendungsbeispiele zeigen einige mögliche Syntaxoptionen für den Bündel-Befehl:

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

Der folgende Block enthält Beispiele für den Bündel-Befehl:

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

Extrahieren von Dateien aus einem Paket oder Bündel

Zusätzlich zum Verpacken und Bündeln von Apps kann MakeAppx.exe auch vorhandene Pakete entpacken oder entbündeln. Dabei müssen sie das Inhaltsverzeichnis als Ziel für die extrahierten Dateien angeben. Wenn Sie versuchen, Dateien aus einem verschlüsselten Paket oder Bundle zu extrahieren, können Sie die Dateien gleichzeitig entschlüsseln und extrahieren, indem Sie die Option /ep verwenden und angeben, ob die Entschlüsselung mit einer Schlüsseldatei (/kf) oder dem globalen Testschlüssel (/kt) erfolgen soll. Weitere Informationen zum Entschlüsseln eines Pakets oder Bündels finden Sie unter Verschlüsseln oder Entschlüsseln eines Pakets oder Bündels.

Spezielle Optionen für die Entpack- und Entbündel-Befehle:

Option Beschreibung
/nd Führt beim Entpacken oder Entbündeln des Pakets/Bündels keine Entschlüsselung durch.
/pfn Entpackt/Entbündelt alle Dateien in ein Unterverzeichnis unter dem angegebenen Ausgabepfad, das nach dem vollständigen Namen des Bündels oder Pakets benannt ist.

Die folgenden Verwendungsbeispiele zeigen einige mögliche Syntaxoptionen für die Befehle Entpacken und Entbündeln:

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

Der folgende Block enthält Beispiele für die Entpack- und Entbündel- Befehle:

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

Verschlüsseln oder Entschlüsseln eines Pakets oder Bündels

Das MakeAppx.exe-Tool kann auch ein vorhandenes Paket oder Bündel verschlüsseln oder entschlüsseln. Sie müssen lediglich den Paketnamen, den Namen des Ausgabepakets und angeben, ob für die Ver- oder Entschlüsselung eine Schlüsseldatei (/kf) oder der globale Testschlüssel (/kt) verwendet werden soll.

Die Ver- und Entschlüsselung ist nicht über den Visual Studio-Paketerstellungs-Assistenten verfügbar.

Optionen, die für die Befehle Verschlüsseln und Entschlüsseln spezifisch sind:

Option Beschreibung
/ep Gibt ein verschlüsseltes App-Paket oder -Bündel an.

Die folgenden Verwendungsbeispiele zeigen einige mögliche Syntaxoptionen für die Befehle Verschlüsseln und Entschlüsseln:

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

Der folgende Block enthält Beispiele für die Verwendung der für die Befehle Verschlüsseln und Entschlüsseln:

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

Schlüsseldateien

Schlüsseldateien müssen mit einer Zeile beginnen, die die Zeichenfolge „[Keys]“ enthält, gefolgt von Zeilen, die die Schlüssel beschreiben, mit denen jedes Paket verschlüsselt werden soll. Jeder Schlüssel wird durch ein Paar Zeichenfolgen in Anführungszeichen dargestellt, die entweder durch Leerzeichen oder Tabulatoren getrennt sind. Die erste Zeichenfolge steht für die base64-kodierte 32-Byte-Schlüssel-ID und die zweite für den base64-kodierten 32-Byte-Verschlüsselungsschlüssel. Eine Schlüsseldatei sollte eine einfache Textdatei sein.

Beispiel für eine Schlüsseldatei :

[Keys]
"OWVwSzliRGY1VWt1ODk4N1Q4R2Vqc04zMzIzNnlUREU="    "MjNFTlFhZGRGZEY2YnVxMTBocjd6THdOdk9pZkpvelc="

Zuordnungsdateien

Zuordnungsdateien müssen mit einer Zeile beginnen, die die Zeichenfolge „[Files]“ enthält, gefolgt von Zeilen, die die Dateien beschreiben, die dem Paket hinzugefügt werden sollen. Jede Datei wird durch ein Paar von Pfaden in Anführungszeichen beschrieben, die entweder durch Leerzeichen oder Tabulatoren getrennt sind. Jede Datei stellt die Quelle (auf dem Datenträger) und das Ziel (im Paket) dar. Eine Zuordnungsdatei sollte eine einfache Textdatei sein.

Beispiel für eine Zuordnungsdatei (ohne die Option /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"

Wenn Sie eine Zuordnungsdatei verwenden, können Sie auswählen, ob Sie die Option /m verwenden möchten. Mit der Option /m kann der Benutzer die Ressourcenmetadaten in der Zuordnungsdatei angeben, die im generierten Manifest enthalten sein soll. Wenn Sie die Option /m verwenden, muss die Zuordnungsdatei einen Abschnitt enthalten, der mit der Zeile „[ResourceMetadata]“ beginnt, gefolgt von Zeilen, die „ResourceDimensions“ und „ResourceId“ angeben. Ein Anwendungspaket kann mehrere „ResourceDimensions“ enthalten, aber es kann immer nur ein „ResourceId“ geben.

Beispiel für eine Zuordnungsdatei (mit der Option /m):

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

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

Semantische Überprüfung durchgeführt von MakeAppx.exe

MakeAppx.exe führt eine eingeschränkte sematische Überprüfung durch, die darauf ausgelegt ist, die am häufigsten auftretenden Bereitstellungsfehler abzufangen und sicherzustellen, dass das App-Paket gültig ist. Verwenden Sie die Option /nv, wenn Sie während der Verwendung von MakeAppx.exe die Überprüfung überspringen möchten.

Diese Überprüfung stellt Folgendes sicher:

  • Alle Dateien, auf die im Paketmanifest verwiesen wird, sind im App-Paket enthalten.
  • Eine App verfügt nicht über zwei identische Schlüssel.
  • Eine Anwendung registriert sich nicht für ein verbotenes Protokoll aus dieser Liste: SMB, FILE, MS-WWA-WEB, MS-WWA.

Dies ist keine vollständige semantische Überprüfung, da sie nur zum Abfangen häufiger Fehler ausgerichtet ist. Pakete, die von MakeAppx.exe erstellt wurden, sind nicht garantiert installierbar.