使用 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>
平台版本
在上面的示例清单文件中,除了平台名称外,还有用于指定 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>
MinVersion 和 MaxVersionTested 是清单中的必填字段,它们需要符合四元组表示法 (#.#.#.#)。 如果仅对非 Windows 10 平台使用 MSIX 打包 SDK,只需将 '0.0.0.0' 用作 MinVersion,将 MaxVersionTested 用作版本。
如何在所有平台上有效使用同一包(Windows 10 和非 Windows 10)
为了充分利用 MSIX 打包 SDK,需要以在 Windows 10 上部署应用包的方式生成包,同时在其他平台上受支持。 在 Windows 10 上,可以将包生成为应用扩展。 有关应用扩展以及如何帮助你扩展应用的详细信息,请参阅应用扩展简介博客文章。
在本文前面所示的清单文件示例中,你会注意到 AppExtension 元素中的属性元素。 清单文件的这一部分不进行验证。 这样,开发人员可以在扩展与主机/客户端应用之间指定所需的元数据。