MSIX SDK は、クライアント デバイス上の OS プラットフォームに関係なく、パッケージコンテンツをクライアント デバイスに配布するユニバーサルな方法を開発者に提供します。 これにより、開発者はプラットフォームごとにパッケージ化する必要なく、アプリ コンテンツを 1 回パッケージ化できます。
MSIX SDK とパッケージコンテンツを複数のプラットフォームに配布する機能を利用するために、パッケージを抽出するターゲット プラットフォームを指定する方法が用意されています。 つまり、パッケージの内容は、必要に応じてパッケージから抽出されることを確認できます。
次の表に、マニフェストで宣言するターゲット デバイス ファミリを示します。
プラットホーム | 家族 | ターゲット デバイス ファミリ | 注記 | ||
---|---|---|---|---|---|
Windows 10 | 電話 | すべてのプラットフォーム |
Windows.Universal | Windows.Mobile | モバイル デバイス |
デスクトップ | ウィンドウズ デスクトップ | パソコン | |||
Xboxの | Windows.Xbox | Xbox 本体 | |||
Surface ハブ | ウィンドウズ・チーム | 大画面 Win 10 デバイス | |||
HoloLens (英語) | Windows.Holographic (ホログラフィック技術を使用する Windows 機能) | VR/AR ヘッドセット | |||
IoTの | Windows.IoT | IoT デバイス | |||
iOS | 電話 | Apple.Ios.All | アップル.アイオーエス.フォン | iPhone、Touch | |
タブレット | アップル・iOS・タブレット | iPad mini、iPad、iPad Pro | |||
テレビ | アップル.iOS.TV | Apple TV | |||
時計 | Apple.Ios.Watch | iWatch | |||
MacOS | デスクトップ | Apple.MacOS.すべて | MacBook Pro、MacBook Air、Mac Mini、iMac | ||
アンドロイド | 電話 | Google.Android.All | Google.Android.Phone | Android の任意のフレーバーを対象とするモバイル デバイス | |
タブレット | Google アンドロイド タブレット | Android タブレット | |||
デスクトップ | Google.Android.デスクトップ | Chromebook | |||
テレビ | Google.Android.TV | Android の大画面デバイス | |||
時計 | Google.Android.Watch | Google ギア デバイス | |||
ウィンドウズ | 7 | Windows7.Desktop | Windows 7 デバイス | ||
8 | Windows8.Desktop | Windows 8/8.1 デバイス | |||
ウェブ | Microsoft | Web.All | Web.Edge.All | Edge Web エンジン アプリ | |
アンドロイド | Web.Blink.All | 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>
MinVersion と MaxVersionTested はマニフェストの必須フィールドであり、quad notation(#.#.#.#) に準拠する必要があります。 Windows 10 以外のプラットフォームでのみ MSIX パッケージ SDK のみを使用している場合は、 バージョンとして MinVersion と MaxVersionTested として単に '0.0.0.0' を使用できます。
すべてのプラットフォームで同じパッケージを効果的に使用する方法 (Windows 10 および Windows 10 以外)
MSIX Packaging SDK を最大限に活用するには、Windows 10 上のアプリ パッケージのように展開され、同時に他のプラットフォームでサポートされるようにパッケージをビルドする必要があります。 Windows 10 では、 アプリ拡張機能としてパッケージをビルドできます。 アプリ拡張機能の詳細と、アプリの拡張に役立つ方法については、 アプリ拡張機能の概要に関する ブログ投稿を参照してください。
この記事で前に示したマニフェスト ファイルの例では、AppExtension 要素内の Properties 要素に注目してください。 マニフェスト ファイルのこのセクションでは検証は実行されません。 これにより、開発者は拡張機能とホスト/クライアント アプリの間で必要なメタデータを指定できます。