Creazione di pacchetti di app

In Windows 8.1 nuovi bundle di app rendono ancora più semplice l'invio di app. Con i pacchetti di risorse puoi offrire ai clienti interessati servizi extra, come la localizzazione o asset per schermi ad alta risoluzione, senza influire in alcun modo sullo spazio su disco, la larghezza di banda o l'esperienza di acquisto delle app per chi non ne ha bisogno.

Per esempi specifici dell'uso dei bundle di app per una distribuzione ottimale delle app, leggi l'argomento Creare i pacchetti dei giochi DirectX di Windows Store e vedi l'esempio dei giochi con pacchetti di risorse.

Funzionalità nuove o aggiornate in Windows 8.1

  • Risorse dell'app
  • Bundle di app
  • Identità del pacchetto
  • Distribuzione di bundle di app

Risorse dell'app

In Windows 8.1 è stato introdotto un nuovo tipo di pacchetto nel modello di app. Il pacchetto di risorse ti permette di separare il pacchetto dell'app di base da risorse aggiuntive (ad esempio asset specifici del francese, come stringhe o immagini) e includere tali risorse nel pacchetto corrispondente. Il pacchetto di risorse serve quindi per personalizzare l'esperienza globale dell'app senza richiedere il download e l'installazione di tutti i pacchetti di risorse nel PC.

Il pacchetto di risorse è facoltativo e il pacchetto dell'app non può dipendere da esso. Questo significa che il pacchetto dell'app deve contenere almeno un set di risorse predefinite che possono essere sempre usate nel caso non siano installati pacchetti di risorse nel PC. In questo modo è possibile garantire un paio di punti fermi importanti:

  • Il pacchetto dell'app può essere sempre installato ed eseguito in modo corretto in qualsiasi PC, anche senza pacchetti di risorse.

  • Se il pacchetto di risorse installato non è completo, il pacchetto dell'app ha comunque risorse a disposizione.

Nel modello di app, il pacchetto di risorse ha due scopi:

  • Offrire risorse candidate utilizzabili dal sistema di gestione delle risorse durante l'esecuzione dell'app per personalizzare l'esperienza.

  • Offrire metadati che consentono di associare il pacchetto di risorse a un qualificatore di risorse specifico, ad esempio scala utente, scala di sistema e funzionalità Microsoft DirectX.

I pacchetti di risorse possono usare un solo qualificatore di risorse per pacchetto. L'app tuttavia può avere più pacchetti di risorse.

Bundle di app

Oltre al pacchetto di risorse, in Windows 8.1 stato introdotto anche il bundle dell'app (o pacchetto .appxbundle) per ottimizzare la creazione di pacchetti e la distribuzione per un'app di Windows Store e pacchetti di risorse per gli utenti di tutto il mondo.

Sei tu a creare il file di payload del bundle della tua app. Visual Studio creerà e aggiungerà il manifesto del bundle. Quando Microsoft Visual Studio Express 2013 per Windows crea il bundle della tua app, suddivide automaticamente le risorse in pacchetti separati e aggiunge la mappa dei blocchi dell'app e i file di firma al bundle. Gli elementi seguenti compongono un'app di Windows Store completa e autonoma che può essere distribuita nei sistemi a partire da Windows 8.1.

Pacchetti di app (appx)

Il bundle dell'app può contenere più pacchetti dell'app sono se ognuno è destinato a un'architettura specifica diversa. Può contenere ad esempio sia un pacchetto X86.appx che un pacchetto amd64.appx, ma non due pacchetti amd64.appx.

Pacchetti di risorse (appx)

Il bundle dell'app contiene pacchetti di risorse (file appx) a livello di lingua, scala e funzionalità DirectX. Ogni bundle dell'app può contenere molti pacchetti di risorse diversi per supportare configurazioni di dispositivi differenti. Quando fai riferimento direttamente a un pacchetto di risorse in un'app di Windows Store, devi sfruttare al massimo il sistema di gestione delle risorse.

Nota  I pacchetti di risorse non devono mai contenere codice.

Manifesto del bundle dell'app (AppxBundleManifest.xml)

Il manifesto del bundle dell'app (file appxbundlemanifest) contiene tutte le informazioni di applicabilità per i pacchetti contenuti. Per ogni determinato pacchetto, specifica il tipo di pacchetto ("Applicazione" o "Risorsa") e informazioni sulla versione e l'uso delle risorse. In modo specifico per i pacchetti di app, il manifesto del bundle dell'app include informazioni sull'architettura.

In generale, il manifesto del bundle dell'app consente al modello di app di Windows 8.1 di comprendere il contenuto del bundle dell'app e stabilire al momento dell'installazione quale pacchetto di app e quali pacchetti di risorse devono essere installati nel dispositivo dell'utente.

Ecco un esempio di un file manifesto del bundle dell'app.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Bundle xmlns="https://schemas.microsoft.com/appx/2013/bundle" SchemaVersion="1.0">
  <Identity Name="Example" Publisher="CN=ExamplePublisher" Version="2013.101.312.1053"/>
  <Packages>
    <Package Type="application" Version="1.0.0.5" Architecture="x86" FileName="AppPackage_X86.appx" Offset="49" Size="3207">
      <Resources>
        <Resource Language="en-us"/>
        <Resource Scale="100" />
      </Resources>
    </Package>
    <Package Type="application" Version="1.0.0.4" Architecture="x64" FileName="AppPackage_X64.appx" Offset="3329" Size="3204">
      <Resources>
        <Resource Language="en-us"/>
        <Resource Scale="100" />
      </Resources>
    </Package>
    <Package Type="resource" Version="1.0.0.0" ResourceId="French" FileName="ResourcePackage_French.appx" Offset="6606" Size="1423">
      <Resources>
        <Resource Language="fr"/>
        <Resource Language="fr-fr"/>
        <Resource Language="fr-ca"/>
      </Resources>
    </Package>
    <Package Type="resource" Version="1.0.0.3" ResourceId="HiRes" FileName="ResourcePackage_HiRes.appx" Offset="8111" Size="1584">
      <Resources>
        <Resource Scale="140"/>
      </Resources>
    </Package>
  </Packages>
</Bundle>

Mappa dei blocchi dell'app (AppxBlockMap.xml)

Il file della mappa dei blocchi elenca tutti i file presenti nel bundle (tranne i pacchetti di app e risorse) e i valori degli hash di crittografia associati, che vengono usati dal sistema operativo per convalidare l'integrità dei file e per ottimizzare l'aggiornamento dell'app stessa. Per altre info sul file di mappa dei blocchi, vedi Mappa dei blocchi del pacchetto dell'app.

Firma dell'app (AppxSignature.p7x)

La firma del bundle dell'app garantisce che il pacchetto e il suo contenuto non siano stati modificati dopo la firma. Se il certificato di firma è convalidato dal certificato di Autorità di certificazione radice attendibili, la firma identifica anche chi ha firmato il pacchetto. Di solito il firmatario del pacchetto è l'autore dell'app o chi la pubblica.

Nota  Se vuoi creare manualmente il bundle dell'app, puoi usare le utilità MakeAppx e SignTool autonome. Per altre informazioni sulla creazione e distribuzione di bundle di app di Windows Store, vedi Creazione di pacchetti, distribuzione e query per le app di Windows Store.

Identità del pacchetto

Analogamente al pacchetto di app in Windows 8, uno degli elementi fondamentali del bundle dell'app è la tupla in cinque parti che identifica il bundle. Denominata identità del pacchetto, è costituita da questi dati.

Proprietà Descrizione
Name

Un nome generico usato per il pacchetto dell'app. Ad esempio "miaSocietà.miaSuite.miaApp".

Nota  Questo nome non è necessariamente quello visualizzato nel riquadro dell'app.
Publisher

L'autore dell'app di Windows Store. Nella maggior parte dei casi, l'autore corrisponde all'account usato per la registrazione di un account sviluppatore di Windows 8.

Version

Un descrittore della versione in quattro parti (principale.secondaria.build.revisione) usato per la gestione di eventuali versioni future dell'app (ad esempio "1.0.0.0").

ProcessorArchitecture

Impostazione predefinita neutral.

ResourceID

Impostazione predefinita "~".

 

Distribuzione di bundle di app

La distribuzione di bundle di app tramite Windows Store segue questo flusso di lavoro.

Flusso per la creazione di pacchetti di app

Il processo di distribuzione delle app di Windows Store si svolge in più fasi. Prima di tutto, Windows 8.1 acquisisce e convalida il manifesto, la mappa dei blocchi e la firma del bundle dell'app. Windows 8.1 controlla poi il manifesto del bundle per assicurarsi che contenga un'app distribuibile nell'architettura corrente. Dopo aver trovato il pacchetto dell'app appropriato, Windows 8.1 controlla i criteri di distribuzione del pacchetto dell'app per garantire la riuscita della distribuzione.

Windows 8.1 determina quindi il sottoinsieme di pacchetti di risorse applicabili per la distribuzione ed esegue la gestione temporanea dei file binari di questi pacchetti nella directory \WindowsApps\. Infine, Windows 8.1 registra il pacchetto dell'app e i pacchetti di risorse nell'account dell'utente.

Convalida

Quando l'utente avvia l'installazione di un'app di Windows Store, Windows 8.1 deve eseguire questi controlli prima che la distribuzione possa iniziare.

Controllo Condizioni

Supporto dell'architettura

Il bundle può contenere fino a tre pacchetti di app specifici dell'architettura, tutti indicati nel manifesto del bundle dell'app.

Versione minima del sistema operativo

Devi specificare i prerequisiti all'interno del manifesto del pacchetto dell'app. Specificano il requisito per la versione minima del sistema operativo. Per Windows 8.1 ad esempio il numero di versione appropriato è 6.3. Per altre informazioni sui prerequisiti delle app, vedi Prerequisiti per la creazione di pacchetti di app.

Dipendenze delle app

Per le funzionalità aggiuntive necessarie, un'app di Windows Store può esprimere una dipendenza da un altro pacchetto di componenti. Per altre informazioni sulle dipendenze delle app, vedi Dipendenze.

Spazio su disco

Ogni app di Windows Store richiede una determinata quantità di spazio su disco per la distribuzione. Se lo spazio disponibile su disco non è sufficiente, la distribuzione non riesce.

Controllo della firma

È necessario verificare l'integrità di ogni file del pacchetto dell'app a fronte dell'elemento BlockMap già convalidato.

 

Applicabilità del pacchetto

Dopo aver verificato che il bundle dell'app può essere distribuito nel sistema, Windows 8.1 determina quali pacchetti di risorse distribuire insieme al pacchetto dell'app per ottimizzare l'esperienza dell'utente. Il controllo dell'applicabilità si basa su questi tre qualificatori di risorse specifici.

Qualificatore Descrizione

Lingua dell'utente

Per determinare il set finale di pacchetti di risorse di lingua applicabili da distribuire, si terrà conto di qualsiasi lingua aggiunta dall'utente all'elenco delle lingue preferite. Windows 8.1 supporta numerose impostazioni locali e lingue per i pacchetti di risorse.

Scala di sistema

Per stabilire il set finale di pacchetti di risorse di scala applicabili da distribuire, vengono usati valori di scala per tutti i monitor. Windows 8.1 supporta tre fattori di scala per i pacchetti di risorse: scale-100, scale-140 e scale-180.

Livello di funzionalità DirectX

Tutti i livelli di funzionalità DirectX disponibili nel sistema vengono usati per stabilire il set finale di pacchetti di risorse DirectX applicabili da distribuire. Windows 8.1 supporta tre livelli di funzionalità DirectX per i pacchetti di risorse: DXFL-DX9, DXFL-DX10 e DXFL-DX11.

 

Gestione temporanea del pacchetto

Dopo che Windows 8.1 ha stabilito che il bundle dell'app può essere distribuito nel sistema e quali pacchetti distribuire, il contenuto del pacchetto viene scaricato nella directory \WindowsApps\. Per ogni pacchetto scaricato viene creata una nuova directory e viene assegnato un nome usando il valore del nome dell'identità del pacchetto, come indicato di seguito.

<Package Name>_<Version>_<Architecture>_<ResourceID>_<Publisher Hash>

Il processo di gestione temporanea avviene attraverso una serie di richieste inviate dal motore di distribuzione all'origine della posizione del pacchetto. Queste richieste vengono soddisfatte dall'origine e restituite al motore di distribuzione, dove vengono decompresse, convalidate a fronte dell'elemento BlockMap e copiate nel file appropriato.

Registrazione del pacchetto

La registrazione del pacchetto è la fase finale del processo di distribuzione. Durante questa fase avvengono due operazioni fondamentali:

  • Le estensioni dichiarate nel manifesto del pacchetto dell'app vengono registrate nel sistema operativo. In questo modo l'app si integra completamente con il sistema operativo stesso. Se ad esempio vuoi che la tua app sia in grado di aprire file di testo (con estensione txt), devi dichiarare un'estensione FileTypeAssociation come XML nel tuo manifesto del pacchetto dell'app e specificare l'estensione "txt" come tipo di file.

    Al momento della distribuzione, questo XML viene convertito nel set di modifiche di sistema necessarie perché l'app venga registrata correttamente per la gestione dei file con estensione txt. Queste modifiche vengono quindi apportate dal modello di app per conto dell'app. Il modello di app supporta molte estensioni diverse. Per altre informazioni su queste estensioni, vedi Contratti ed estensioni delle app.

  • Tutti i pacchetti di risorse vengono registrati nel sistema di gestione delle risorse, che può quindi usarli per ottimizzare l'esperienza dell'utente quando viene eseguita l'app.