Verwenden des MSIX SDK zum Verteilen eines MSIX-Pakets auf nicht Windows 10 Plattformen
Das MSIX SDK bietet Entwicklern eine universelle Möglichkeit, Paketinhalte unabhängig von der Betriebssystemplattform auf dem Clientgerät an Clientgeräte zu verteilen. Dadurch können Entwickler ihre App-Inhalte einmal packen, anstatt sie für jede Plattform packen zu müssen.
Um das MSIX SDK und die Möglichkeit zu nutzen, Ihre Paketinhalte auf mehrere Plattformen zu verteilen, bieten wir eine Möglichkeit, die Zielplattformen anzugeben, auf denen Ihre Pakete extrahiert werden. Dies bedeutet, dass Sie sicherstellen können, dass der Paketinhalt nur wie gewünscht aus dem Paket extrahiert wird.
Die folgende Tabelle zeigt die Zielgerätefamilien, die im Manifest deklariert werden.
Plattform | Familie | Zielgerätefamilie | Hinweise | ||
---|---|---|---|---|---|
Windows 10 | Phone | Platform.All |
Windows. Universal | Windows. Mobil | Mobile Geräte |
Desktop | Windows. Desktop | PC | |||
Xbox | Windows. Xbox | Xbox-Konsole | |||
Surface Hub | Windows. Team | Große Win 10-Geräte | |||
HoloLens | Windows. Holographische | VR/AR-Headset | |||
IoT | Windows. Iot | IoT-Geräte | |||
iOS | Phone | Apple.Ios.All | Apple.Ios. Telefon | iPhone, Touch | |
Tablet | Apple.Ios.Tablet | iPad Mini, iPad, iPad Pro | |||
TV | Apple.Ios.TV | Apple TV | |||
Überwachen | Apple.Ios.Watch | iWatch | |||
MacOS | Desktop | Apple.macOS.All | MacBook Pro, MacBook Air, Mac Mini, iMac | ||
Android | Phone | Google.Android.All | Google.Android. Telefon | Mobile Geräte für beliebige Android-Varianten | |
Tablet | Google.Android.Tablet | Android-Tablets | |||
Desktop | Google.Android.Desktop | Chromebooks | |||
TV | Google.Android.TV | Android-Geräte mit großen Bildschirmen | |||
Überwachen | Google.Android.Watch | Google-Zahnradgeräte | |||
Windows | 7 | Windows7.Desktop | Windows 7 Geräte | ||
8 | Windows8.Desktop | Windows 8/8.1-Geräte | |||
Web | Microsoft | Web.All | Web.Edge.All | Edge-Web-Engine-Apps | |
Android | Web.Blink.All | Blink-Web-Engine-Apps | |||
Chrome | Web. Chromium. Alle | Chrome-Web-Engine-Apps | |||
iOS | Web.Webkit.All | Webkit-Web-Engine-Apps | |||
MacOS | Web.Safari.All | Safari-Web-Engine-Apps | |||
Linux | Beliebige/Alle | Linux.All | Alle Linux-Distributionen |
In die Manifestdatei des App-Pakets müssen Sie die entsprechende Zielgerätefamilie integrieren, wenn der Paketinhalt nur auf bestimmten Plattformen und Geräten extrahiert werden soll. Wenn Ihnen das Paket so gefällt, dass es auf allen Plattform- und Gerätetypen unterstützt wird, wählen Sie Platform.All als Zielgerätefamilie aus. Wenn das Paket nur in Web-Apps unterstützt werden soll, wählen Sie auf ähnliche Weise Web.All aus.
Beispielmanifestdatei (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>
Plattformversion
In der obigen Beispielmanifestdatei sind neben dem Plattformnamen auch Parameter zum Angeben von MinVersion und MaxVersionTested enthalten. Diese Parameter werden auf Windows 10 verwendet. Auf Windows 10 wird das Paket nur auf Betriebssystemversionen bereitgestellt Windows 10 die größer als MinVersion sind. Auf anderen Nicht-Windows 10-Plattformen werden die Parameter MinVersion und MaxVersionTested nicht verwendet, um die Deklaration zu treffen, ob der Paketinhalt extrahiert werden soll.
Wenn Sie das Paket für alle Plattformen (Windows 10 und nicht Windows 10) verwenden möchten, empfiehlt es sich, die Parameter MinVersion und MaxVersionTested zu verwenden, um die Windows 10-Betriebssystemversionen anzugeben, in denen Ihre App funktionieren soll. Der Abschnitt Abhängigkeiten Ihres Manifests sieht also wie im folgenden Ausschnitt aus:
<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 undMaxVersionTested sind erforderliche Felder im Manifest und müssen der Quad-Notation (#.#.#.#) entsprechen. Wenn Sie das MSIX Packaging SDK nur für Nicht-Windows 10-Plattformen verwenden, können Sie einfach "0.0.0.0" als MinVersion und MaxVersionTested als Versionen verwenden.
Effektive Verwendung desselben Pakets auf allen Plattformen (Windows 10 und Windows 10)
Um das MSIX Packaging SDK zu nutzen, müssen Sie das Paket so erstellen, dass es wie ein App-Paket auf Windows 10 bereitgestellt und gleichzeitig auf anderen Plattformen unterstützt wird. Auf Windows 10 können Sie das Paket als App-Erweiterung erstellen. Weitere Informationen zu App-Erweiterungen und deren Unterstützung bei der Erweiterbarkeit Ihrer App finden Sie im Blogbeitrag Introduction to App Extensions (Einführung in App-Erweiterungen).
Im beispiel der Manifestdatei, das weiter oben in diesem Artikel gezeigt wurde, sehen Sie ein Properties-Element innerhalb des AppExtension-Elements . In diesem Abschnitt der Manifestdatei wird keine Validierung durchgeführt. Dadurch können Entwickler die erforderlichen Metadaten zwischen der Erweiterung und der Host-/Client-App angeben.