MSIX SDK を使用して Windows 10 以外のプラットフォームで MSIX パッケージを配布する
MSIX SDK は、クライアント デバイスの OS プラットフォームに関係なく、パッケージ コンテンツをクライアント デバイスに配布するための汎用的な方法を開発者に提供します。 これにより、開発者は、プラットフォームごとにパッケージ化する代わりに、アプリのコンテンツを 1 回でパッケージ化できます。
MSIX SDK とパッケージ コンテンツを複数のプラットフォームに配布する機能を利用するために、パッケージを抽出するターゲット プラットフォームを指定する方法が用意されています。 つまり、パッケージの内容が必要なときにのみパッケージから抽出されるようにすることができます。
次の表に、マニフェストで宣言するターゲット デバイス ファミリを示します。
プラットフォーム | 家族 | ターゲット デバイス ファミリ | メモ | ||
---|---|---|---|---|---|
Windows 10 | 電話番号 | Platform.All |
Windows.Universal | Windows.Mobile | モバイル デバイス |
デスクトップ | Windows.Desktop | PC | |||
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、Touch | |
タブレット PC | 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.Phone | Android の任意のフレーバーを対象とするモバイル デバイス | |
タブレット PC | 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 | Blink Web エンジン アプリ | |||
Chrome | Web.Chromium.All | Chrome Web エンジン アプリ | |||
iOS | Web.Webkit.All | Webkit Web エンジン アプリ | |||
MacOS | Web.Safari.All | Safari Web エンジン アプリ | |||
Linux | Any/All | 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 セクションは次のようになります。
<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 を使用している場合は、MinVersion および MaxVersionTested のバージョンとして '0.0.0.0' を使用できます。
すべてのプラットフォーム (Windows 10 および Windows 10 以外) で同じパッケージを効果的に使用する方法
MSIX パッケージ SDK を最大限に活用するには、Windows 10 でアプリ パッケージのようにデプロイされ、同時に他のプラットフォームでもサポートされる方法でパッケージをビルドする必要があります。 Windows 10 では、パッケージをアプリ拡張機能としてビルドできます。 アプリ拡張機能と、アプリを拡張可能にする方法の詳細については、ブログ記事「アプリ拡張機能の概要」を参照してください。
この記事で前に示したマニフェスト ファイルの例では、AppExtension 要素内に Properties 要素があります。 マニフェスト ファイルのこのセクションでは、検証は実行されません。 これにより、開発者は拡張機能とホスト/クライアント アプリの間で必要なメタデータを指定できます。