Freigeben über


App-Objekt-Manager (MakeAppx.exe)

Hinweis

Eine UWP-Anleitung zur Verwendung dieses Tools finden Sie unter Erstellen eines App-Pakets mit dem Tool MakeAppx.exe.

 

App Packager (MakeAppx.exe) erstellt ein App-Paket aus Dateien auf dem Datenträger oder extrahiert die Dateien aus einem App-Paket auf die Festplatte. Ab Windows 8.1 erstellt App Packager auch ein App-Paket-Bundle aus App-Paketen auf dem Datenträger oder extrahiert die App-Pakete aus einem App-Paket-Bundle auf den Datenträger. Es ist in Microsoft Visual Studio und dem Windows Software Development Kit (SDK) für Windows 8 oder dem Windows Software Development Kit (SDK) für Windows 8.1 und neuer enthalten. Besuchen Sie Downloads für Entwickler*innen, um es zu erhalten.

Das Tool MakeAppx.exe befindet sich in der Regel an betriebssystemversionsspezifischen Speicherorten:

  • C:\Program Files (x86)\Windows Kits\10\bin<build number><architecture>\makeappx.exe

Mit <Architektur> = x86, x64, arm, ar64 oder chpe. Alternativ kann sie sich in folgendem Bereich befinden:

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

App Packager verwenden

Hinweis

Relative Pfade werden vom gesamten Tool unterstützt.

 

So erstellen Sie ein Paket mit einer Verzeichnisstruktur

Legen Sie die Datei AppxManifest.xml im Root eines Verzeichnisses ab, das alle Payload-Dateien für Ihre App enthält. Für das App-Paket wird eine identische Verzeichnisstruktur erstellt, die zur Verfügung steht, wenn das Paket bei der Bereitstellung extrahiert wird.

  1. Legen Sie alle Dateien in einer einzigen Verzeichnisstruktur ab, und erstellen Sie nach Wunsch Unterverzeichnisse.

  2. Erstellen Sie ein gültiges Manifest für das Paket, AppxManifest.xml, und legen Sie es im Root-Verzeichnis ab.

  3. Führen Sie diesen Befehl aus:

    MakeAppx pack /d input_directorypath /p filepath.appx

So erstellen Sie ein Paket mit Hilfe einer Zuordnungsdatei

  1. Erstellen Sie ein gültiges Paket-Manifest, AppxManifest.xml.

  2. Erstellen Sie eine Zuordnungsdatei. Die erste Zeile enthält die Zeichenfolge [Files], und die folgenden Zeilen geben die Quell- (Datenträger) und Zielpfade (Pakete) in Anführungszeichen an.

    [Files]
    "C:\MyApp\StartPage.htm"     "default.html"
    "C:\MyApp\readme.txt"        "doc\readme.txt"
    "\\MyServer\path\icon.png"   "icon.png"
    "MyCustomManifest.xml"       "AppxManifest.xml"
    
  3. Führen Sie diesen Befehl aus:

    MakeAppx pack /f mapping_filepath /p filepath.appx

So signieren Sie das Paket mit SignTool

  1. Erstellen Sie das Zertifikat. Der im Manifest aufgeführte Publisher muss mit den Subject-Informationen des Signierzertifikats übereinstimmen. Weitere Informationen zum Erstellen eines Signierzertifikats finden Sie unter So erstellen Sie ein Signierzertifikat für ein App-Paket.

  2. Führen Sie SignTool.exe aus, um das Paket zu signieren:

    SignTool sign /a /v /fd hashAlgorithmus /f certFileName filepath.appx

    Der hashAlgorithmus muss mit dem Hash-Algorithmus übereinstimmen, mit dem die Blockmap beim Packaging der App erstellt wurde. Mit dem Packaging-Dienstprogramm MakeAppx ist der Standard-Hash-Algorithmus für die Appx-Blockmap SHA256. Führen Sie SignTool.exe aus, und geben Sie dabei SHA256 als Algorithmus für den Datei-Digest (/fd) an:

    SignTool sign /a /v /fd SHA256 /f certFileName filepath.appx

    Weitere Informationen über das Signieren von Paketen finden Sie unter So signieren Sie ein App-Paket mit SignTool.

So extrahieren Sie Dateien aus einem Paket

  1. Führen Sie diesen Befehl aus:

    MakeAppx unpack /p file.appx /d output_directory

  2. Das entpackte Paket hat die gleiche Struktur wie das installierte Paket.

So erstellen Sie ein Paket-Bundle mit einer Verzeichnisstruktur

Mit dem Befehl bundle erstellen wir ein App-Bundle unter <output bundle name>, indem wir alle Pakete aus dem <content directory> (einschließlich Unterordnern) hinzufügen. Wenn <content directory> ein Bundle-Manifest, AppxBundleManifest.xml, enthält, wird es ignoriert.

  1. Legen Sie alle Pakete in einer einzigen Verzeichnisstruktur ab, und erstellen Sie nach Wunsch Unterverzeichnisse.

  2. Führen Sie diesen Befehl aus:

    MakeAppx bundle /d input_directorypath /p filepath.appxbundle

So erstellen Sie ein Paket-Bundle mit Hilfe einer Zuordnungsdatei

Mit dem Befehl bundle erstellen wir ein App-Bundle unter <output bundle name>, indem wir alle Pakete aus einer Liste von Paketen in der <Zuordnungsdatei> hinzufügen. Wenn die <Zuordnungsdatei> ein Bundle-Manifest, AppxBundleManifest.xml, enthält, wird es ignoriert.

  1. Erstellen Sie eine <Zuordnungsdatei>. Die erste Zeile enthält die Zeichenfolge [Files], und die folgenden Zeilen geben die Pakete an, die dem Bundle hinzugefügt werden sollen. Jedes Paket wird durch ein Pfadpaar in Anführungszeichen beschrieben, das durch Leerzeichen oder Tabulatoren getrennt ist. Das Pfadpaar steht für die Quelle des Pakets (auf dem Datenträger) und das Ziel (im Bundle). Alle Namen von Zielpaketen müssen die Erweiterung .appx haben.

        [Files]
        "C:\MyApp\MyApp_x86.appx"                 "MyApp_x86.appx"
        "C:\Program Files (x86)\ResPack.appx"    "resources\resPack.appx"
        "\\MyServer\path\ResPack.appx"           "Respack.appx"
        "my app files\respack.appx"              "my app files\respack.appx"
    
  2. Führen Sie diesen Befehl aus:

    MakeAppx bundle /f mapping_filepath /p filepath.appxbundle

So extrahieren Sie Pakete aus einem Bundle

  1. Führen Sie diesen Befehl aus:

    MakeAppx unbundle /p bundle_name.appxbundle /d output_directory

  2. Das entpackte Bundle hat die gleiche Struktur wie das installierte Paket-Bundle.

So verschlüsseln Sie ein Paket mit einer Schlüsseldatei

  1. Erzeugen Sie eine Schlüsseldatei. Schlüsseldateien müssen mit einer Zeile beginnen, die die Zeichenfolge „[Keys]“ enthält, gefolgt von Zeilen, die die Schlüssel beschreiben, mit denen das Paket verschlüsselt werden soll. Jeder Schlüssel wird durch ein Zeichenfolgenpaar in Anführungszeichen beschrieben, das durch Leerzeichen oder Tabulatoren getrennt ist. Die erste Zeichenfolge steht für die Schlüssel-ID und die zweite Zeichenfolge für den Verschlüsselungsschlüssel in hexadezimaler Form.

        [Keys]
        "0"                 "1AC4CDCFF1924D2885A0607269787BA6BF09B7FFEBF74ED4B9D86E423CF9186B"
    
  2. Führen Sie diesen Befehl aus:

    MakeAppx.exe encrypt /p package_name.appx /ep encrypted_package_name.eappx /kf keyfile_name.txt

  3. Das Eingabepaket wird unter Verwendung der angegebenen Schlüsseldatei in das angegebene verschlüsselte Paket verschlüsselt.

So verschlüsseln Sie ein Paket mit einem globalen Testschlüssel

  1. Führen Sie diesen Befehl aus:

    MakeAppx.exe encrypt /p package_name.appx /ep encrypted_package_name.eappx /kt

  2. Das Eingabepaket wird unter Verwendung des globalen Testschlüssels in das angegebene verschlüsselte Paket verschlüsselt.

So entschlüsseln Sie ein Paket mit einer Schlüsseldatei

  1. Erzeugen Sie eine Schlüsseldatei. Schlüsseldateien müssen mit einer Zeile beginnen, die die Zeichenfolge „[Keys]“ enthält, gefolgt von Zeilen, die die Schlüssel beschreiben, mit denen das Paket verschlüsselt werden soll. Jeder Schlüssel wird durch ein Zeichenfolgenpaar in Anführungszeichen beschrieben, das durch Leerzeichen oder Tabulatoren getrennt ist. Die erste Zeichenfolge steht für die base64-kodierte 32-Byte-Schlüssel-ID und die zweite Zeichenfolge für den base64-kodierten 32-Byte-Verschlüsselungsschlüssel.

        [Keys]
        "OWVwSzliRGY1VWt1ODk4N1Q4R2Vqc04zMzIzNnlUREU="                 "MjNFTlFhZGRGZEY2YnVxMTBocjd6THdOdk9pZkpvelc="
    
  2. Führen Sie diesen Befehl aus:

    MakeAppx.exe decrypt /p package_name.appx /ep unencrypted_package_name.eappx /kf keyfile_name.txt

  3. Das Eingabepaket wird unter Verwendung der angegebenen Schlüsseldatei in das angegebene unverschlüsselte Paket entschlüsselt.

So entschlüsseln Sie ein Paket mit einem globalen Testschlüssel

  1. Führen Sie diesen Befehl aus:

    MakeAppx.exe decrypt /p package_name.appx /ep unencrypted_package_name.eappx /kt

  2. Das Eingabepaket wird unter Verwendung des globalen Testschlüssels in das angegebene unverschlüsselte Paket entschlüsselt.

Verbrauch

Das Kommandozeilenargument /p ist immer erforderlich, entweder mit /d, /f oder /ep. Beachten Sie, dass /d, /f und /ep sich gegenseitig ausschließen.

MakeAppx pack [options] /p <output package name> /d <content directory>

MakeAppx pack [options] /p <output package name> /f <mapping file>

MakeAppx unpack [options] /p <input package name> /d <output directory>

MakeAppx bundle [options] /p <output bundle name> /d <content directory>

MakeAppx bundle [options] /p <output bundle name> /f <Zuordnungsdatei>

MakeAppx unbundle [options] /p <input bundle name> /d <output directory>

MakeAppx encrypt [options] /p <input package name> /ep <output package name>

MakeAppx decrypt [options] /p <input package name> /ep <output package name>

Befehlszeilensyntax

Hier ist die allgemeine Syntax für die Kommandozeile von MakeAppx.

MakeAppx [pack|unpack|bundle|unbundle|encrypt|decrypt] [/h /kf /kt /l /o /no /nv /v /pfn /?]

MakeAppx packt oder entpackt die Dateien in einem Paket, bündelt oder entbündelt die Pakete in einem Bundle oder verschlüsselt oder entschlüsselt das App-Paket oder -Bundle in dem angegebenen Eingabeverzeichnis oder der Zuordnungsdatei. Hier ist die Liste der Parameter, die für MakeAppx pack, MakeAppx unpack, MakeAppx bundle, MakeAppx unbundle, MakeAppx encrypt oder MakeAppx decrypt gelten.

/l

Diese Option wird für lokalisierte Pakete verwendet. Bei lokalisierten Paketen erfolgt eine Standardüberprüfung. Diese Option deaktiviert nur diese spezielle Überprüfung, ohne dass alle Überprüfungen deaktiviert werden müssen.

/o

Überschreiben der Ausgabedatei, wenn sie existiert. Wenn Sie diese Option oder die Option /no nicht angeben, wird der/die Benutzer*in gefragt, ob er/sie die Datei überschreiben möchte.

Sie können diese Option nicht mit /no verwenden.

/no

Verhindert das Überschreiben der Ausgabedatei (sofern vorhanden). Wenn Sie diese Option oder die Option /o nicht angeben, wird die/der Benutzer*in gefragt, ob sie/er die Datei überschreiben möchte.

Sie können diese Option nicht mit /o verwenden.

/nv

Semantische Validierung überspringen. Wenn Sie diese Option nicht angeben, führt das Tool eine vollständige Überprüfung des Pakets durch.

/v

Aktivieren der ausführlichen Ausgabe der Log-Dateien auf der Konsole.

/?

Bildschirm-Hilfetext anzeigen.

MakeAppx pack, MakeAppx unpack, MakeAppx bundle, MakeAppx unbundle, MakeAppx encrypt und MakeAppx decrypt sind Befehle, die sich gegenseitig ausschließen. Im Folgenden finden Sie die Kommandozeilenparameter, die speziell für die einzelnen Befehle gelten:

MakeAppx pack [h]

Erstellen eines Pakets

/h Algorithmus

Gibt den Hashalgorithmus an, der beim Erstellen der Blockzuordnung verwendet werden soll. Hier sind die gültigen Werte für Algorithmus:

SHA256 (Standard)
SHA384
SHA512

Sie können diese Option nicht mit dem Befehl unpack verwenden.

MakeAppx unpack [pfn]

Extrahiert alle Dateien des angegebenen Pakets in das angegebene Ausgabeverzeichnis. Die Ausgabe hat die gleiche Verzeichnisstruktur wie das Paket.

/pfn

Gibt ein Verzeichnis mit dem vollständigen Namen des Pakets an. Dieses Verzeichnis wird unter dem angegebenen Ausgabeort erstellt. Sie können diese Option nicht mit dem Befehl pack verwenden.

MakeAppx unbundle [pfn]

Packt alle Pakete in ein Unterverzeichnis unter dem angegebenen Ausgabepfad aus, das nach dem vollständigen Namen des Bundles benannt ist. Die Ausgabe hat die gleiche Verzeichnisstruktur wie das installierte Paket-Bundle.

/pfn

Gibt ein Verzeichnis mit dem vollen Namen des Paket-Bundles an. Dieses Verzeichnis wird unter dem angegebenen Ausgabeort erstellt. Sie können diese Option nicht mit dem Befehl bundle verwenden.

MakeAppx encrypt [kf, kt]

Erzeugt ein verschlüsseltes App-Paket aus dem angegebenen Eingabepaket am angegebenen Ausgabepaket.

/kf <Schlüsseldatei>

Verschlüsselt das Paket oder Bundle mit dem Schlüssel aus der angegebenen Schlüsseldatei. Sie können diese Option nicht mit kt verwenden.

/kt

Verschlüsselt das Paket oder Bundle mit dem globalen Testschlüssel. Sie können diese Option nicht mit kf verwenden.

MakeAppx decrypt [kf, kt]

Erzeugt ein unverschlüsseltes App-Paket aus dem angegebenen Eingabepaket am angegebenen Ausgabepaket.

/kf <Schlüsseldatei>

Entschlüsselt das Paket oder Bundle mit dem Schlüssel aus der angegebenen Schlüsseldatei. Sie können diese Option nicht mit kt verwenden.

/kt

Entschlüsselt das Paket oder Bundle unter Verwendung des globalen Testschlüssels. Sie können diese Option nicht mit kf verwenden.

Semantische Validierung durch MakeAppx

MakeAppx führt eine begrenzte semantische Validierung durch, um die häufigsten Fehler bei der Bereitstellung abzufangen und sicherzustellen, dass das App-Paket gültig ist.

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.

Diese semantische Validierung ist nicht vollständig, und von MakeAppx erstellte Pakete sind nicht garantiert installierbar.