使用 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>
平台版本
在上面的示例清单文件和平台名称中,还提供了用于指定MinVersion和MaxVersionTested的参数,这些参数在 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>
MinVersion 和 MaxVersionTested 是清单中必填的字段,它们需要符合四个表示法 ( #. #. #. # ) 。 如果仅对非 Windows 10 平台使用 .msix 打包 SDK,则只需使用 "0.0.0.0" 作为 " MinVersion " 和 " MaxVersionTested " 作为版本。
如何在所有平台上高效使用同一包 (Windows 10 和非 Windows 10)
若要充分利用 .msix 打包 SDK,需要以一种在 Windows 10 上部署的方式来构建包,并在其他平台上同时受支持。 在 Windows 10 上,可以将包构建为应用扩展。 有关应用扩展的详细信息以及它们如何帮助使应用可扩展,请参阅 应用扩展简介 博客文章。
在本文前面部分中所示的清单文件示例中,你会注意到AppExtension元素中有一个Properties元素。 清单文件的此部分没有执行任何验证。 这允许开发人员指定扩展插件和主机/客户端应用之间的必需元数据。