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

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. Ciò consente agli sviluppatori di creare un pacchetto del contenuto dell'app una sola volta invece di dover creare un pacchetto per ogni piattaforma.

Per sfruttare i vantaggi di 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 come desiderato.

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

Piattaforma Famiglia Famiglia di dispositivi di destinazione Note
Windows 10 Telefono





















Platform.All























Windows.Universal Windows.Mobile Dispositivi mobili
Desktop Windows.Desktop PC
Xbox Windows.Xbox Console Xbox
Surface Hub Windows.Team Dispositivi Win 10 su schermo grande
HoloLens Windows.Holographic VISORE VR/AR
IoT Windows.IoT Dispositivi IoT
iOS Telefono Apple.Ios.All Apple.Ios. Telefono i Telefono, Tocco
Tablet Apple.Ios.Tablet iPad mini, iPad, iPad Pro
TV Apple.Ios.TV Apple TV
Guarda 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 destinati a qualsiasi sapore di Android
Tablet Google.Android.Tablet Tablet Android
Desktop Google.Android.Desktop Chromebook
TV Google.Android.TV Dispositivi Android di grandi dimensioni
Guarda Google.Android.Watch Dispositivi a forma di ingranaggio Google
Windows 7 Windows7.Desktop Dispositivi Windows 7
8 Windows8.Desktop Dispositivi Windows 8/8.1
Web Microsoft Web.All Web.Edge.All App del motore Web Edge
Android Web.Blink.All Blink web engine apps (App del motore Web Blink)
Chrome Web.Chromium.All App del motore Web Chrome
iOS Web.Webkit.All App del motore Webkit
MacOS Web.Safari.All App del motore Web Safari
Linux Any/All Linux.All Tutte le distribuzioni linux

Nel file manifesto del pacchetto dell'app, dovrai includere la famiglia di dispositivi di destinazione appropriata se vuoi che il contenuto del pacchetto venga estratto solo su piattaforme e dispositivi specifici. Se si preferisce il pacchetto in modo che sia supportato in tutti i tipi di piattaforma e dispositivo, scegliere Platform.All come famiglia di dispositivi di destinazione. Analogamente, se si preferisce 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, esistono anche parametri per specificare MinVersion e MaxVersionTested Questi parametri vengono usati nelle piattaforme Windows 10. In Windows 10 il pacchetto verrà distribuito solo nelle versioni del sistema operativo Windows 10 superiori a MinVersion. In altre piattaforme non Windows 10, i parametri MinVersion e MaxVersionTested non vengono usati per stabilire se estrarre il contenuto del pacchetto.

Se vuoi usare il pacchetto per tutte le piattaforme (Windows 10 e non Windows 10), ti consigliamo di usare i parametri MinVersion e MaxVersionTested per specificare le versioni del sistema operativo Windows 10 in cui desideri che la tua 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 usi SOLO MSIX Packaging SDK solo per piattaforme non Windows 10, puoi semplicemente usare '0.0.0.0.0' come MinVersion e MaxVersionTested come versioni.

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

Per sfruttare al meglio MSIX Packaging SDK, dovrai compilare il pacchetto in modo da essere distribuito come un pacchetto di app in Windows 10 e allo stesso tempo supportato in altre piattaforme. In Windows 10 puoi compilare il pacchetto come estensione dell'app. Per altre informazioni sulle estensioni dell'app e su come possono semplificare l'estendibilità dell'app, vedere il post di blog Introduzione alle estensioni dell'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. In questo modo gli sviluppatori possono specificare i metadati necessari tra l'estensione e l'app host/client.