Usare MSIX SDK per distribuire un pacchetto MSIX in piattaforme non Windows 10 client

MSIX SDK offre agli sviluppatori un modo universale per distribuire il contenuto dei pacchetti ai dispositivi client indipendentemente dalla piattaforma del sistema operativo nel dispositivo client. In questo modo gli sviluppatori possono creare un pacchetto del contenuto dell'app una sola volta anziché creare un pacchetto per ogni piattaforma.

Per sfruttare msix SDK e la possibilità di distribuire il contenuto del pacchetto a più piattaforme, è possibile specificare le piattaforme di destinazione in cui si vuole estrarre i pacchetti. Ciò significa che è possibile assicurarsi che il contenuto del pacchetto venga estratto dal pacchetto solo nel modo desiderato.

La tabella seguente illustra le famiglie di dispositivi di destinazione da dichiarare nel manifesto.

Piattaforma Famiglia Famiglia di dispositivi di destinazione Note
Windows 10 Telefono





















Platform.All























Windows. Universale Windows. Mobile Dispositivi mobili
Desktop Windows. Desktop PC
Xbox Windows. Xbox Console Xbox
Surface Hub Windows. Team Dispositivi Win 10 a schermo grande
HoloLens Windows. Olografica Visore VR/AR
IoT Windows. Sacco Dispositivi IoT
iOS Telefono Apple.Ios.All Apple.Ios. Telefono iPhone, Tocco
Tablet Apple.Ios.Tablet iPad mini, iPad, iPad Pro
TV Apple.Ios.TV Apple TV
Video Apple.Ios.Watch iWatch
MacOS Desktop Apple.MacOS.All MacBook Pro, MacBook Air, Mac Mini, iMac
Android Telefono Google.Android.All Google.Android. Telefono Dispositivi mobili che hanno come destinazione qualsiasi versione di Android
Tablet Google.Android.Tablet Tablet Android
Desktop Google.Android.Desktop Chromebook
TV Google.Android.TV Dispositivi Android con schermo di grandi dimensioni
Video Google.Android.Watch Dispositivi Google Gear
Windows 7 Windows7.Desktop Windows 7 dispositivi
8 Windows8.Desktop Windows 8/8.1
Web Microsoft Web.All Web.Edge.All App del motore Web Edge
Android Web.Blink.All App del motore Web Blink
Chrome Web. Chromium. Tutti App del motore Web Chrome
iOS Web.Webkit.All App del motore Web di Webkit
MacOS Web.Safari.All App del motore Web Safari
Linux Tutto Linux.All Tutte le distribuzioni linux

Nel file manifesto del pacchetto dell'app è necessario includere la famiglia di dispositivi di destinazione appropriata se si desidera che il contenuto del pacchetto sia estratto solo in piattaforme e dispositivi specifici. Se si desidera che il pacchetto sia supportato in tutti i tipi di piattaforma e dispositivo, scegliere Platform.All come famiglia di dispositivi di destinazione. Analogamente, se si desidera che il pacchetto sia supportato solo nelle app Web, scegliere Web.All.

File manifesto di esempio (AppxManifest.xml)

<?xml version="1.0" encoding="utf-8"?>
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
         xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
         xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
         xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3"
         IgnorableNamespaces="mp uap uap3">

  <Identity Name="BestAppExtension"
            Publisher="CN=awesomepublisher"
            Version="1.0.0.0" />

  <mp:PhoneIdentity PhoneProductId="56a6ecda-c215-4864-b097-447edd1f49fe" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>

  <Properties>
    <DisplayName>Best App Extension</DisplayName>
    <PublisherDisplayName>Awesome Publisher</PublisherDisplayName>
    <Description>This is an extension package to my app</Description>
    <Logo>Assets\StoreLogo.png</Logo>
  </Properties>

  <Resources>
    <Resource Language="x-generate"/>
  </Resources>

  <Dependencies>
    <TargetDeviceFamily Name="Platform.All" MinVersion="0.0.0.0" MaxVersionTested="0.0.0.0"/>
  </Dependencies>

  <Applications>
    <Application Id="App">
      <uap:VisualElements
          DisplayName="Best App Extension"
          Description="This is the best app extension"
          BackgroundColor="white"
          Square150x150Logo="images\squareTile-sdk.png"
          Square44x44Logo="images\smallTile-sdk.png"
          AppListEntry="none">
      </uap:VisualElements>

      <Extensions>
        <uap3:Extension Category="Windows.appExtension">
          <uap3:AppExtension Name="add-in-contract" Id="add-in" PublicFolder="Public" DisplayName="Sample Add-in" Description="This is a sample add-in">
            <uap3:Properties>
               <!--Free form space-->
            </uap3:Properties>
          </uap3:AppExtension>
        </uap3:Extension>
      </Extensions>

    </Application>
  </Applications>
</Package>

Versione della piattaforma

Nel file manifesto di esempio precedente, insieme al nome della piattaforma, sono presenti anche parametri per specificare MinVersion e MaxVersionTested Questi parametri vengono usati nelle piattaforme Windows 10. In Windows 10, il pacchetto verrà distribuito solo in Windows 10 versioni del sistema operativo maggiori di MinVersion. In altre piattaforme non Windows 10, i parametri MinVersion e MaxVersionTested non vengono usati per rendere la dichiarazione di se estrarre il contenuto del pacchetto.

Se si vuole usare il pacchetto per tutte le piattaforme (Windows 10 e non Windows 10), è consigliabile usare i parametri MinVersion e MaxVersionTested per specificare le versioni del sistema operativo Windows 10 in cui si vuole che l'app funzioni. La sezione Dipendenze del manifesto sarà quindi simile alla seguente:

  <Dependencies>
    <TargetDeviceFamily Name="Platform.All" MinVersion="0.0.0.0" MaxVersionTested="0.0.0.0"/>
    <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.14393.0" MaxVersionTested="10.0.16294.0"/>
  </Dependencies>

MinVersion e MaxVersionTested sono campi obbligatori nel manifesto e devono essere conformi alla notazione quad(#.#.#.#). Se si usa MSIX Packaging SDK solo per piattaforme non Windows 10, è sufficiente usare '0.0.0.0.0' come MinVersion e MaxVersionTested come versioni.

Come usare in modo efficace lo stesso pacchetto in tutte le piattaforme (Windows 10 e non Windows 10)

Per ottenere il massimo da MSIX Packaging SDK, è necessario compilare il pacchetto in modo che verrà distribuito come un pacchetto di app in Windows 10 e contemporaneamente supportato in altre piattaforme. In Windows 10, è possibile compilare il pacchetto come estensione dell'app. Per altre informazioni sulle estensioni app e su come possono rendere estensibile l'app, vedere il post di blog Introduzione alle estensioni di app.

Nell'esempio di file manifesto illustrato in precedenza in questo articolo si noterà un elemento Properties all'interno dell'elemento AppExtension . In questa sezione del file manifesto non viene eseguita alcuna convalida. Ciò consente agli sviluppatori di specificare i metadati necessari tra l'estensione e l'app host/client.