Verteilen eines MSIX-Pakets auf Plattformen ohne Windows 10 mithilfe des MSIX SDK
Das MSIX SDK bietet Developern eine universelle Möglichkeit, Paketinhalte unabhängig von der Betriebssystemplattform auf dem Clientgerät zu verteilen. Auf diese Weise müssen Developer ihre App-Inhalte nur einmal verpacken, anstatt sie für jede Plattform verpacken zu müssen.
Um das MSIX SDK und die Möglichkeit, Ihre Paketinhalte auf mehrere Plattformen zu verteilen, bieten wir eine Möglichkeit, die Zielplattformen anzugeben, in die Ihre Pakete entpackt werden sollen. Dies bedeutet, dass Sie sicherstellen können, dass der Paketinhalt nur nach Wunsch aus dem Paket extrahiert wird.
In der folgenden Tabelle sind die Zielgerätefamilien aufgeführt, die im Manifest angegeben werden sollen.
Plattform | Familie | Zielgerätefamilie | Hinweise | ||
---|---|---|---|---|---|
Windows 10 | Telefon | Platform.All |
Windows.Universal | Windows.Mobile | Mobile Geräte |
Desktop | Windows.Desktop | PC | |||
Xbox | Windows.Xbox | Xbox-Konsole | |||
Surface Hub | Windows.Team | Win 10-Geräte mit großem Bildschirm | |||
HoloLens | Windows.Holographic | VR/AR Headset | |||
IoT | Windows.IoT | IoT-Geräte | |||
iOS | Telefon | Apple.Ios.All | Apple.Ios. Telefon | iPhone, Toucheingabe | |
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 | Telefon | Google.Android.All | Google.Android.Phone | Mobile Geräte, die auf einen jeglichen Android-Geschmack abzielen | |
Tablet | Google.Android.Tablet | Android-Tablets | |||
Desktop | Google.Android.Desktop | Chromebooks | |||
TV | Google.Android.TV | Android-Geräte mit großem Bildschirm | |||
Überwachen | Google.Android.Watch | Google Gear-Gerä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-Webmodul-Apps | |
Android | Web.Blink.All | Blink-Webmodul-Apps | |||
Chrome | Web.Chromium.All | Chrome Web Engine-Apps | |||
iOS | Web.Webkit.All | Webkit-Webmodul-Apps | |||
MacOS | Web.Safari.All | Safari-Webmodul-Apps | |||
Linux | Any/All | Linux.All | Alle Linux-Verteilungen |
In der App-Paketmanifestdatei müssen Sie die entsprechende Zielgerätefamilie einschließen, 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 Sie möchten, dass das Paket nur in Web-Apps unterstützt wird, wählen Sie 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 zusammen mit dem Plattformnamen gibt es auch Parameter, um die MinVersion und MaxVersionTested auf Windows 10-Plattformen anzugeben. Unter Windows 10 wird das Paket nur unter Windows 10-Betriebssystemversionen bereitgestellt, die größer als die MinVersion sind. Auf anderen Nicht-Windows 10-Plattformen werden die Parameter MinVersion und MaxVersionTested nicht verwendet, um die Deklaration darüber zu erstellen, ob der Paketinhalt extrahiert werden soll.
Wenn Sie das Paket für alle Plattformen (Windows 10 und Nicht-Windows 10) verwenden möchten, empfehlen wir, 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 würde also wie folgt aussehen:
<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 und MaxVersionTested sind Pflichtfelder im Manifest und müssen der Quadnotation(#.#.#.#) entsprechen. Wenn Sie nur das MSIX-Verpackungs-SDK nur für Nicht-Windows 10-Plattformen verwenden, können Sie einfach „0.0.0.0“ als MinVersion und MaxVersionTested als Versionen verwenden.
Hilfe & Anleitung um dasselbe Paket auf allen Plattformen zu verwenden (Windows 10 und Nicht-Windows 10)
Um das MSIX Packaging SDK optimal zu nutzen, müssen Sie das Paket auf eine Weise erstellen, die wie ein App-Paket unter Windows 10 bereitgestellt ist 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 dazu, wie diese Ihre App erweiterbar machen können, finden Sie im Blogbeitrag Einführung in App-Erweiterungen.
Im Weiter oben in diesem Artikel gezeigten Manifestdateibeispiel werden Sie ein Properties-Element innerhalb des AppExtension-Elements bemerken. In diesem Abschnitt der Manifestdatei wird keine Validierung ausgeführt. Auf diese Weise können Developer die erforderlichen Metadaten zwischen Erweiterung und Host-/Client-App angeben.