Использование пакета SDK MSIX для распространения пакета MSIX на платформах, отличных от Windows 10

Пакет SDK MSIX предоставляет разработчикам универсальный способ распространения содержимого пакета на клиентские устройства независимо от платформы ОС на клиентском устройстве. Это позволяет разработчикам упаковать содержимое приложения один раз, а не упаковать для каждой платформы.

Чтобы воспользоваться преимуществами пакета SDK MSIX и возможностью распространения содержимого пакета на нескольких платформах, мы предоставляем способ указать целевые платформы, на которых требуется извлечь пакеты. Это означает, что содержимое пакета извлекается из пакета только по мере необходимости.

В следующей таблице показаны семейства целевых устройств для объявления в манифесте.

Платформа Семья Семейство целевых устройств Примечания.
Windows 10 Номер телефона





















Platform.All























Windows.Universal Windows.Mobile Мобильные устройства
Настольный компьютер Windows.Desktop ПК
Xbox Windows.Xbox Консоль Xbox
Surface Hub Windows.Team Устройства Win 10 с большим экраном
HoloLens Windows.Holographic Гарнитура VR/AR
IoT Windows.IoT Устройства IoT
iOS Номер телефона Apple.Ios.All Apple.Ios. Телефон i Телефон, Touch
Планшет Apple.Ios.Tablet iPad mini, iPad, iPad Pro
TV Apple.Ios.TV Apple TV
Смотреть Apple.Ios.Watch Iwatch
MacOS Настольный компьютер Apple.MacOS.All MacBook Pro, MacBook Air, Mac Mini, iMac
Android Номер телефона Google.Android.All Google.Android. Телефон Мобильные устройства, предназначенные для любого вкуса Android
Планшет Google.Android.Tablet Планшеты под управлением Android
Настольный компьютер Google.Android.Desktop Chromebooks
TV Google.Android.TV Устройства с большим экраном Android
Смотреть Google.Android.Watch Устройства Google шестеренки
Windows 7 Windows7.Desktop Устройства Windows 7
8 Windows8.Desktop Устройства Windows 8/8.1
Сеть Microsoft Web.All Web.Edge.All Приложения веб-подсистемы Edge
Android Web.Blink.All Приложения веб-подсистемы Blink
Chrome Web.Chromium.All Приложения веб-подсистемы Chrome
iOS Web.Webkit.All Приложения веб-подсистемы Webkit
MacOS Web.Safari.All Приложения веб-подсистемы Safari
Linux Любой или все Linux.All Все дистрибутивы Linux

В файле манифеста пакета приложения необходимо включить соответствующее семейство целевых устройств, если вы хотите, чтобы содержимое пакета было извлечено только на определенных платформах и устройствах. Если вы хотите, чтобы пакет поддерживался на всех платформах и типах устройств, выберите Platform.All в качестве семейства целевых устройств. Аналогичным образом, если вы хотите, чтобы пакет поддерживался только в веб-приложениях, выберите Web.All.

Пример файла манифеста (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>

Версия платформы

В приведенном выше примере файла манифеста вместе с именем платформы также существуют параметры для указания параметра MinVersion и MaxVersionTested Эти параметры используются на платформах Windows 10. В Windows 10 пакет будет развернут только в версиях ОС Windows 10, превышающих MinVersion. На других платформах, отличных от Windows 10, параметры MinVersion и MaxVersionTested не используются для объявления о том, следует ли извлекать содержимое пакета.

Если вы хотите использовать пакет для всех платформ (Windows 10 и не Windows 10), рекомендуется использовать параметры MinVersion и MaxVersionTested, чтобы указать версии ОС Windows 10, в которых вы хотите работать приложение. Поэтому раздел зависимостей манифеста будет выглядеть следующим образом:

  <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 и MaxVersionTested являются обязательными полями в манифесте, и они должны соответствовать нотации квадрата (#.#.#.#).#). Если вы используете только пакет SDK для упаковки MSIX только для платформ, отличных от Windows 10, вы можете просто использовать "0.0.0.0.0" в качестве версий MinVersion и MaxVersionTested.

Как эффективно использовать один и тот же пакет на всех платформах (Windows 10 и не Windows 10)

Чтобы получить большую часть пакета SDK для упаковки MSIX, необходимо создать пакет таким образом, который будет развернут как пакет приложения в Windows 10 и в то же время поддерживается на других платформах. В Windows 10 можно создать пакет как расширение приложения. Дополнительные сведения о расширениях приложений и о том, как они могут помочь сделать приложение расширяемым, см. в записи блога "Общие сведения о расширениях приложений ".

В примере файла манифеста, приведенном ранее в этой статье, вы заметите элемент Properties в элементе AppExtension . В этом разделе файла манифеста не выполняется проверка. Это позволяет разработчикам указывать необходимые метаданные между расширением и клиентским приложением.