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

MSIX SDK 为开发人员提供了一种通用方法,可以将包内容分发到客户端设备,而不考虑客户端设备上的操作系统平台。 这使开发人员能够打包其应用内容一次,而不必针对每个平台进行打包。

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

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

平台 系列 目标设备系列 备注
Windows 10 电话





















Platform.All























Windows。普遍 Windows。移动 移动设备
桌面 Windows。桌面 PC
Xbox Windows。Xbox Xbox 控制台
Surface Hub Windows。团队 大屏幕 Win 10 设备
HoloLens Windows。全息 VR/AR 头戴显示设备
IoT Windows。IoT IoT 设备
iOS 电话 Apple.Ios.All Apple.Ios。电话 iPhone、触控
平板电脑 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 Chromebook
TV 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 闪烁 Web 引擎应用
Chrome Web。Chromium。所有 Chrome Web 引擎应用
iOS Web.Webkit.All Webkit Web 引擎应用
MacOS Web.Safari.All Safari Web 引擎应用
Linux 任意/所有 Linux.All 所有 Linux 分发版

如果希望仅在特定平台和设备中提取包内容,则需要在应用包清单文件中包含相应的目标设备系列。 如果希望包在所有平台和设备类型上都受支持,请选择" 平台.全部 "作为目标设备系列。 同样,如果希望包仅在 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 上,包将仅部署 Windows 10 大于 MinVersion 的操作系统版本。 在其他非 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元素中有一个Properties元素。 清单文件的此部分没有执行任何验证。 这允许开发人员指定扩展插件和主机/客户端应用之间的必需元数据。