使用 MSIX SDK 在非 Windows 10 平台上分发 MSIX 包

无论客户端设备上的 OS 平台如何,MSIX SDK 都为开发人员提供了将包内容分发到客户端设备的通用方法。 这样,开发人员就可以一次性打包应用程序内容,而不必为每个平台分别打包。

为了利用 MSIX SDK 以及将包内容分发到多个平台的功能,我们提供了一种方法来指定要将包提取到的目标平台。 这意味着,你可以确保仅根据需要从包中提取包内容。

下表显示了在清单中声明的目标设备系列。

平台 系列 目标设备系列 说明
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.Phone iPhone、触控
平板电脑 Apple.Ios.Tablet iPad mini、iPad、iPad Pro
电视 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.Phone 面向任何 Android 风格的移动设备
平板电脑 Google.Android.Tablet Android 平板电脑
桌面 Google.Android.Desktop Chromebooks
电视 Google.Android.TV Android 大屏幕设备
监视 Google.Android.Watch Google 齿轮设备
Windows 7 Windows7.Desktop Windows 7 设备
8 Windows8.Desktop Windows 8/8.1 设备
Web Microsoft Web.All Web.Edge.All Edge Web 引擎应用
Android Web.Blink.All Blink Web 引擎应用
Chrome Web.Chromium.All Chrome Web 引擎应用
iOS Web.Webkit.All Webkit Web 引擎应用
MacOS Web.Safari.All Safari Web 引擎应用
Linux 任何/全部 Linux.All 所有 Linux 发行版

在应用包清单文件中,如果需要仅在特定平台和设备上提取包内容,则需要包含相应的目标设备系列。 如果希望以所有平台和设备类型都支持的方式生成包,请选择 Platform.All 作为目标设备系列。 同样,如果希望包仅在 Web 应用中受支持,请选择 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>

平台版本

在上面的示例清单文件中,除了平台名称外,还有用于指定 MinVersionMaxVersionTested 的参数。这些参数用于 Windows 10 平台。 在 Windows 10 上,该包仅部署在高于 MinVersion 的 Windows 10 OS 版本上。 在其他非 Windows 10 平台上,MinVersion 和 MaxVersionTested 参数不用于声明是否提取包内容。

如果想要对所有平台(Windows 10 和非 Windows 10)使用包,建议使用 MinVersion 和 MaxVersionTested 参数来指定希望应用运行的 Windows 10 OS 版本。 因此,清单的依赖项部分如下所示:

  <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>

MinVersionMaxVersionTested 是清单中的必填字段,它们需要符合四元组表示法 (#.#.#.#)。 如果仅对非 Windows 10 平台使用 MSIX 打包 SDK,只需将 '0.0.0.0' 用作 MinVersion,将 MaxVersionTested 用作版本。

如何在所有平台上有效使用同一包(Windows 10 和非 Windows 10)

为了充分利用 MSIX 打包 SDK,需要以在 Windows 10 上部署应用包的方式生成包,同时在其他平台上受支持。 在 Windows 10 上,可以将包生成为应用扩展。 有关应用扩展以及如何帮助你扩展应用的详细信息,请参阅应用扩展简介博客文章。

在本文前面所示的清单文件示例中,你会注意到 AppExtension 元素中的属性元素。 清单文件的这一部分不进行验证。 这样,开发人员可以在扩展与主机/客户端应用之间指定所需的元数据。