Condividi tramite


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 MakeAppx.exe.

 

Il packager dell'app (MakeAppx.exe) crea un pacchetto dell'app dai file su disco o estrae i file da un pacchetto dell'app su disco. A partire da Windows 8.1, Il pacchetto 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\bin<build number><architecture>\makeappx.exe

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

C:\Programmi (x86)\Windows Kits\10\Kit di certificazione app\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 /d input_directorypath /p filepath.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 di 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 /f mapping_filepath /p filepath.appx

Per firmare il pacchetto con SignTool

  1. Creare il certificato. Il server di pubblicazione 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 /fd hashAlgorithm /f certFileName filepath.appx

    HashAlgorithm deve corrispondere all'algoritmo hash usato per creare la mappa di blocco 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 digest del file (/fd):

    SignTool sign /a /v /fd SHA256 /f certFileName filepath.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 /p file.appx /d output_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 di 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 /d input_directorypath /p filepath.appxbundle

Per creare un bundle di pacchetti usando un file di mapping

Usiamo il comando bundle per creare un bundle di 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 è 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 /f mapping_filepath /p filepath.appxbundle

Per estrarre pacchetti da un bundle

  1. Eseguire questo comando:

    MakeAppx unbundle /p bundle_name.appxbundle /d output_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 tabulazioni. 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 crittografare /p package_name.appx /ep encrypted_package_name.eappx /kf keyfile_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 /p package_name.appx /ep encrypted_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 tabulazioni. 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 /p package_name.appx /ep unencrypted_package_name.eappx /kf keyfile_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 /p package_name.appx /ep unencrypted_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] /p <nome >pacchetto di output /d< directory del contenuto>

MakeAppx pack [opzioni] /p <nome >pacchetto di output /f< file di mapping>

MakeAppx decomprimere [opzioni] /p< nome >pacchetto di input /d< directory di output>

Bundle MakeAppx [opzioni] /p <nome >bundle di output /d< directory del contenuto>

Bundle MakeAppx [opzioni] /p <nome >bundle di output /f< file di mapping>

MakeAppx unbundle [opzioni] /p <nome >bundle di input /d< directory di output>

MakeAppx encrypt [opzioni] /p <nome pacchetto di input /ep< output package name> >

MakeAppx decrypt [options] /p <input package name /ep< output 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 separa 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 decomprimere, bundle MakeAppx, MakeAppx unbundle, MakeAppx encrypt o MakeAppx decrypt.

/l

Questa opzione viene usata per i pacchetti localizzati. I viaggi di convalida predefiniti nei pacchetti localizzati. Questa opzione disabilita solo la convalida specifica, senza richiedere che tutta la convalida sia disabilitata.

/o

Sovrascrivere il file di output, se presente. Se non si specifica questa opzione o l'opzione /no , all'utente viene chiesto se desidera 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 desidera sovrascrivere il file.

Non è possibile usare questa opzione con /o.

/Nv

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

/v

Abilitare l'output di registrazione dettagliato 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.

Algoritmo /h

Specifica l'algoritmo hash da utilizzare durante la creazione della mappa a blocchi. Ecco i valori validi per l'algoritmo:

SHA256 (impostazione predefinita)
SHA384
SHA512

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

Decomprimere MakeAppx [pfn]

Estrae tutti i file nel pacchetto specificato nella directory di output specificata. 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 di chiave /kf <>

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 di app non crittografato dal pacchetto dell'app di input specificato nel pacchetto di output specificato.

File di chiave /kf <>

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.

Questa convalida garantisce che:

  • Tutti i file a cui si fa riferimento nel manifesto del pacchetto sono inclusi nel pacchetto dell'app.
  • Un'applicazione non dispone di 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.