Strumento per la creazione di pacchetti di app (MakeAppx.exe)

Nota

Per indicazioni sulla piattaforma UWP sull'uso di questo strumento, vedi Creare un pacchetto di app con lo strumento di MakeAppx.exe.

 

Il packager dell'app (MakeAppx.exe) crea un pacchetto dell'app da file su disco o estrae i file da un pacchetto dell'app su disco. A partire da Windows 8.1, il packager app crea anche un bundle di pacchetti dell'app dai pacchetti dell'app su disco o estrae i pacchetti dell'app da un bundle di pacchetti dell'app su disco. È incluso in Microsoft Visual Studio e Windows Software Development Kit (SDK) per Windows 8 o Windows Software Development Kit (SDK) per Windows 8.1 e versioni successive. Visitare Download per gli sviluppatori per ottenerli .

Lo strumento MakeAppx.exe si trova in genere nelle posizioni specifiche della versione del sistema operativo:

  • C:\Programmi (x86)\Windows Kits\10\binbuild< numberarchitecture><>\makeappx.exe

Dove = x86, x64, arm, ar64 o chpe. In alternativa, può trovarsi in:

C:\Programmi (x86)\Windows Kits\10\Certificazione app Kit\makeappx.exe

Uso di App Packager

Nota

I percorsi relativi sono supportati in tutto lo strumento.

 

Per creare un pacchetto usando una struttura di directory

Posizionare il AppxManifest.xml nella radice di una directory contenente tutti i file di payload per l'app. Viene creata una struttura di directory identica per il pacchetto dell'app e sarà disponibile quando il pacchetto viene estratto in fase di distribuzione.

  1. Inserire tutti i file in una singola struttura di directory, creando sottodirectory in base alle esigenze.

  2. Creare un manifesto del pacchetto valido, AppxManifest.xml e inserirlo nella directory radice.

  3. Eseguire questo comando:

    MakeAppx pack /dinput_directorypath/pfilepath.appx

Per creare un pacchetto usando un file di mapping

  1. Creare un manifesto del pacchetto valido AppxManifest.xml.

  2. Creare un file di mapping. La prima riga contiene la stringa [Files] e le righe che seguono specificano i percorsi di origine (disco) e destinazione (pacchetto) in stringhe tra virgolette.

    [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. Eseguire questo comando:

    MakeAppx pack /fmapping_filepath/pfilepath.appx

Per firmare il pacchetto tramite SignTool

  1. Creare il certificato. L'autore elencato nel manifesto deve corrispondere alle informazioni sull'oggetto dell'editore del certificato di firma. Per altre informazioni sulla creazione di un certificato di firma, vedere Come creare un certificato di firma del pacchetto dell'app.

  2. Eseguire SignTool.exe per firmare il pacchetto:

    SignTool sign /a /v /fdhashAlgorithm/fcertFileNamefilepath.appx

    HashAlgorithm deve corrispondere all'algoritmo hash usato per creare la mappa a blocchi quando l'app è stata inserita nel pacchetto. Con l'utilità di creazione pacchetti MakeAppx, l'algoritmo hash blockmap Appx predefinito è SHA256. Eseguire SignTool.exe specificando SHA256 come algoritmo di digest del file (/fd):

    SignTool sign /a /v /fd SHA256 /fcertFileNamefilepath.appx

    Per altre info su come firmare i pacchetti, vedi Come firmare un pacchetto dell'app con SignTool.

Per estrarre file da un pacchetto

  1. Eseguire questo comando:

    MakeAppx decomprimere /pfile.appx/doutput_directory

  2. Il pacchetto decompresso ha la stessa struttura del pacchetto installato.

Per creare un bundle di pacchetti usando una struttura di directory

Usiamo il comando bundle per creare un bundle dell'app in corrispondenza <del nome> del bundle di output aggiungendo tutti i pacchetti dalla <directory> del contenuto (incluse le sottocartelle). Se <la directory> del contenuto contiene un manifesto del bundle, AppxBundleManifest.xml, viene ignorata.

  1. Inserire tutti i pacchetti in una singola struttura di directory, creando sottodirectory in base alle esigenze.

  2. Eseguire questo comando:

    Bundle MakeAppx /dinput_directorypath/pfilepath.appxbundle

Per creare un bundle di pacchetto usando un file di mapping

Usiamo il comando bundle per creare un bundle dell'app in corrispondenza <del nome> del bundle di output aggiungendo tutti i pacchetti da un elenco di pacchetti all'interno <del file> di mapping. Se <il file> di mapping contiene un manifesto del bundle, AppxBundleManifest.xml, viene ignorato.

  1. Creare un <file> di mapping. La prima riga contiene la stringa [Files] e le righe che seguono specificano i pacchetti da aggiungere al bundle. Ogni pacchetto viene descritto da una coppia di percorsi tra virgolette, separati da spazi o schede. La coppia di percorsi rappresenta l'origine del pacchetto (su disco) e la destinazione (in bundle). Tutti i nomi dei pacchetti di destinazione devono avere l'estensione appx.

        [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. Eseguire questo comando:

    Bundle MakeAppx /fmapping_filepath/pfilepath.appxbundle

Per estrarre pacchetti da un bundle

  1. Eseguire questo comando:

    MakeAppx unbundle /pbundle_name.appxbundle /doutput_directory

  2. Il bundle decompresso ha la stessa struttura del bundle del pacchetto installato.

Per crittografare un pacchetto con un file di chiave

  1. Creare un file di chiave. I file di chiave devono iniziare con una riga contenente la stringa "[Keys]" seguita da righe che descrivono le chiavi con cui crittografare il pacchetto. Ogni chiave è descritta da una coppia di stringhe tra virgolette, separate da spazi o schede. La prima stringa rappresenta l'ID chiave e la seconda stringa rappresenta la chiave di crittografia in formato esadecimale.

        [Keys]
        "0"                 "1AC4CDCFF1924D2885A0607269787BA6BF09B7FFEBF74ED4B9D86E423CF9186B"
    
  2. Eseguire questo comando:

    MakeAppx.exe encrypt /ppackage_name.appx /epencrypted_package_name.eappx /kfkeyfile_name.txt

  3. Il pacchetto di input verrà crittografato nel pacchetto crittografato specificato usando il file di chiave fornito.

Per crittografare un pacchetto con una chiave di test globale

  1. Eseguire questo comando:

    MakeAppx.exe crittografare /ppackage_name.appx /epencrypted_package_name.eappx /kt

  2. Il pacchetto di input verrà crittografato nel pacchetto crittografato specificato usando la chiave di test globale.

Per decrittografare un pacchetto con un file di chiave

  1. Creare un file di chiave. I file di chiave devono iniziare con una riga contenente la stringa "[Keys]" seguita da righe che descrivono le chiavi con cui crittografare il pacchetto. Ogni chiave è descritta da una coppia di stringhe tra virgolette, separate da spazi o schede. La prima stringa rappresenta l'ID chiave a 32 byte con codifica Base64 e la seconda stringa rappresenta la chiave di crittografia a 32 byte con codifica Base64.

        [Keys]
        "OWVwSzliRGY1VWt1ODk4N1Q4R2Vqc04zMzIzNnlUREU="                 "MjNFTlFhZGRGZEY2YnVxMTBocjd6THdOdk9pZkpvelc="
    
  2. Eseguire questo comando:

    MakeAppx.exe decrittografare /ppackage_name.appx /epunencrypted_package_name.eappx /kfkeyfile_name.txt

  3. Il pacchetto di input verrà decrittografato nel pacchetto non crittografato specificato usando il file di chiave fornito.

Per decrittografare un pacchetto con una chiave di test globale

  1. Eseguire questo comando:

    MakeAppx.exe decrittografare /ppackage_name.appx /epunencrypted_package_name.eappx /kt

  2. Il pacchetto di input verrà decrittografato nel pacchetto non crittografato specificato usando la chiave di test globale.

Utilizzo

L'argomento della riga di comando /p è sempre obbligatorio, con /d, /f o /ep. Si noti che /d, /f e /ep si escludono a vicenda.

MakeAppx pack [opzioni]/poutput< package name>/dcontent<directory>

MakeAppx pack [opzioni]/poutput< package name>/fmapping< file>

Decomprimere MakeAppx [opzioni]/pinput< package name>/doutput< directory>

Bundle MakeAppx [opzioni]/poutput< bundle name>/dcontent<directory>

Bundle MakeAppx [opzioni]/poutput< bundle name>/fmapping< file>

MakeAppx unbundle [options]/pinput< bundle name>/doutput< directory>

MakeAppx encrypt [options]/pinput< package name/epoutput package name><>

MakeAppx decrypt [options]/pinput< package name/epoutput package name><>

Sintassi della riga di comando

Ecco la sintassi di utilizzo comune della riga di comando per MakeAppx.

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

MakeAppx pack o decomprime i file in un pacchetto, bundle o scollega i pacchetti in un bundle oppure crittografa o decrittografa il pacchetto o il bundle dell'app nella directory di input o nel file di mapping specificato. Ecco l'elenco dei parametri che si applicano al pacchetto MakeAppx, MakeAppx unpack, MakeAppx bundle,MakeAppx unbundle, MakeAppx encrypt o MakeAppx decrypt.

/l

Questa opzione viene usata per i pacchetti localizzati. La convalida predefinita può comportare problemi se applicata ai pacchetti localizzati. Questa opzione disabilita solo la convalida specifica, senza richiedere la disabilitazione di tutte le convalide.

/o

Sovrascrivere il file di output, se esistente. Se non si specifica questa opzione o l'opzione /no , all'utente viene chiesto se vuole sovrascrivere il file.

Non è possibile usare questa opzione con /no.

/no

Impedisce la sovrascrittura del file di output, se presente. Se non si specifica questa opzione o l'opzione /o , all'utente viene chiesto se vuole sovrascrivere il file.

Non è possibile usare questa opzione con /o.

/nv

Ignorare la convalida semantica. Se non specifichi questa opzione, lo strumento esegue una convalida completa del pacchetto.

/v

Abilitare l'output dettagliato della registrazione nella console.

/?

Visualizzare il testo della Guida.

MakeAppx pack , MakeAppx decomprimere , bundle MakeAppx, MakeAppx unbundle, MakeAppx encrypt e MakeAppx decrypt sono comandi che si escludono a vicenda. Ecco i parametri della riga di comando che si applicano in modo specifico a ogni comando:

MakeAppx pack [h]

Crea un pacchetto.

/halgorithm

Specifica l'algoritmo hash da usare per la creazione della mappa dei blocchi. Ecco i valori validi per l'algoritmo:

SHA256 (impostazione predefinita)
SHA384
SHA512

Non è possibile usare questa opzione con il comando di decompressione .

MakeAppx decomprimere [pfn]

Estrae tutti i file dal pacchetto specificato nella directory di output indicata. L'output ha la stessa struttura di directory del pacchetto.

/pfn

Specifica una directory denominata con il nome completo del pacchetto. Questa directory viene creata nel percorso di output specificato. Non è possibile usare questa opzione con il comando pack .

MakeAppx unbundle [pfn]

Decomprime tutti i pacchetti in una sottodirectory nel percorso di output specificato, denominato dopo il nome completo del bundle. L'output ha la stessa struttura di directory del bundle del pacchetto installato.

/pfn

Specifica una directory denominata con il nome completo del bundle del pacchetto. Questa directory viene creata nel percorso di output specificato. Non è possibile usare questa opzione con il comando bundle .

MakeAppx encrypt [kf, kt]

Crea un pacchetto di app crittografato dal pacchetto dell'app di input specificato nel pacchetto di output specificato.

File /kfkey<>

Crittografa il pacchetto o il bundle usando la chiave dal file di chiave specificato. Non è possibile usare questa opzione con kt.

/kt

Crittografa il pacchetto o il bundle usando la chiave di test globale. Non è possibile usare questa opzione con kf.

MakeAppx decrypt [kf, kt]

Crea un pacchetto dell'app non crittografato dal pacchetto dell'app di input specificato nel pacchetto di output specificato.

File /kfkey<>

Decrittografa il pacchetto o il bundle usando la chiave dal file di chiave specificato. Non è possibile usare questa opzione con kt.

/kt

Decrittografa il pacchetto o il bundle usando la chiave di test globale. Non è possibile usare questa opzione con kf.

Convalida semantica eseguita da MakeAppx

MakeAppx esegue una convalida semantica limitata progettata per rilevare gli errori di distribuzione più comuni e garantire che il pacchetto dell'app sia valido.

La convalida assicura che:

  • Tutti i file a cui si fa riferimento nel manifesto del pacchetto siano inclusi nel pacchetto dell'app.
  • Un'applicazione non abbia due chiavi identiche.
  • Un'applicazione non esegue la registrazione per un protocollo non consentito da questo elenco: SMB , FILE, MS-WWA-WEB, MS-WWA.

Questa convalida semantica non è completa e non è garantito che i pacchetti compilati da MakeAppx siano installabili.