使用 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 集线器 Windows.Team 大屏幕 Win 10 设备
HoloLens Windows.Holographic VR/AR 头戴显示设备
物联网 Windows.IoT IoT 设备
iOS 电话 Apple.Ios.All 苹果 iOS 手机 iPhone、Touch
平板电脑 Apple iOS平板 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
安卓 电话 Google.Android.All Google.Android.Phone 面向任何 Android 风格的移动设备
平板电脑 谷歌安卓平板电脑 Android 平板电脑
桌面 Google.Android.Desktop Chromebook
电视 Google.Android.TV Android 大屏幕设备
手表 Google.Android.Watch Google 穿戴设备
Windows操作系统 7 Windows7.Desktop Windows 7 设备
8 Windows8.Desktop Windows 8/8.1 设备
网络 微软 Web.All Web.Edge.All Edge Web 引擎应用
安卓 Web.Blink.All Blink Web 引擎应用
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>

平台版本

在上面的示例清单文件中,除了平台名称外,还有用于指定 MinVersion 和 MaxVersionTested 这些参数在 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”用作 MinVersionMaxVersionTested 的版本号。

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

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

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