Windows-Apps: Verpacken, Bereitstellung und Verarbeiten

Hinweis

Einige Informationen beziehen sich auf Vorabversionen, die vor der kommerziellen Freigabe grundlegend geändert werden können. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.

In diesem Thema werden Ihre Optionen zu folgenden Themen erläutert:

  • Ob Ihre App verpackt wird.
  • Wie Sie Ihre App bereitstellen/verbreiten und wie sie installiert wird.
  • Der Laufzeitprozess Ihrer App: Wie isoliert er sein wird und welche APIs dafür verfügbar sind.

Sie können diese Entscheidungen sowohl für neue als auch für vorhandene Apps treffen. Wenn Sie sich aber noch in der Planungsphase für eine neue App befinden, entscheiden Sie zuerst, welches Entwicklungsplattform- und Benutzeroberflächenframework Sie für Ihre App verwenden werden, bevor Sie mit den oben genannten Überlegungen beginnen. Und für diese Entscheidung finden Sie hier Eine Übersicht über die Windows-Entwicklungsoptionen.

Verpackt oder unverpackt

Die Entscheidung, ihre App entweder verpackt oder unverpackt zu machen, wird zuerst durch ein Konzept bestimmt, das als Paketidentitätbezeichnet wird, das im folgenden Abschnitt beschrieben wird. Wenn Sie dies nicht benötigen, kommt die Entscheidung auf die gewünschte Installationsprogramm-Erfahrung für sich selbst und für Ihre Benutzer an. Sehen wir uns die Details dieser Dinge an.

Viele Windows-Erweiterbarkeitsfeatures (einschließlich Hintergrundaufgaben, Benachrichtigungen, Livekacheln und Freigabezielen) können nur dann von einer App verwendet werden, wenn diese App zur Laufzeit über eine Paketidentität verfügt. Das liegt daran, dass das Betriebssystem den Aufrufer der entsprechenden API identifizieren können muss. Weitere Informationen finden Sie unter Features, für die Paketidentität benötigt wird.

  • Wenn Sie eines dieser Features verwenden müssen, benötigt Ihre App die Paketidentität. Daher muss es sich um eine verpackte App handeln (verpackte Apps sind die einzigen, die eine Paketidentität haben). Eine gepackte App wird mithilfe der MSIX-Technologie gepackt. (Weitere Informationen finden Sie unter Was ist MSIX?.)
    • Für eine neue App ist der Verpackungsvorgang unkompliziert (und am Ende dieses Abschnitts gibt es Informationen dazu, wie Sie dies tun).
    • Bei einigen vorhandenen Apps können Sie den gleichen Verpackungsprozess wie bei einer neuen App durchführen. Da jedoch einige vorhandene Apps noch nicht bereit sind, dass alle Inhalte in einem MSIX-Paket vorhanden sind, gibt es eine Option, mit der Ihre App an externem Speicherort verpackt werden kann. Auf diese Weise kann Ihre App die Paketidentität aufweisen und dadurch die Features verwenden, die sie erfordert. Weitere Informationen finden Sie unter Erteilen der Paketidentität durch Verpacken mit externem Speicherort.
  • Auch wenn Sie keine dieser Features verwenden müssen, ist das Erstellen einer verpackten App immer noch eine gute Idee. Sie bietet Ihren Benutzern die einfachste Möglichkeit, Ihre App zu installieren, zu deinstallieren und zu aktualisieren. Weitere Informationen finden Sie in diesem Thema unter Bereitstellung/Verteilung/Installation.
  • Das Erstellen einer unverpackten App ist jedoch eine Option.

Bei verpackten Apps handelt es sich um die einzige Art eine Paketidentität zu haben (und sie haben die beste Installationserfahrung). Eine unverpackte App hat keine Paketidentität. Daher können die oben genannten APIs/Features nicht verwendet werden.

Weitere Details zu verpackten und unverpackten Apps finden Sie in der Übersicht über die Bereitstellung, insbesondere im Abschnitt Vor- und Nachteile des Verpackens Ihrer App in diesem Thema. In diesem Thema wird auch die Option Verpackt mit externem Speicherort erwähnt.

Informationen zum Konfigurieren Ihrer App als verpackt oder unverpackt:

Siehe auch den Abschnitt Windows-Paket-Manager und den WinGet-Clientabschnitt in diesem Thema.

Bereitstellung/Verteilung/Installation

  • Eine verpackte App wird mithilfe der MSIX-Technologie gepackt.
    • Eine verpackte App auch mit MSIX installiert. Wenn Sie sich jedoch für das Paket mit externem Speicherort entscheiden, können Sie sich dies als „Bring-your-own-installer“-Modell vorstellen. Es gibt also einige Installationsarbeit für Sie zu erledigen, wenn Sie diese Option wählen. Weitere Informationen finden Sie unter Erteilen der Paketidentität durch Verpacken mit externem Speicherort.
  • Eine unverpackte App umfasst MSIX überhaupt nicht.

Warum spielt es also keine Rolle, ob Ihre App verpackt ist?

  • MSIX bietet Ihren Benutzern eine einfache Möglichkeit zum Installieren, Deinstallieren und Aktualisieren Ihrer App. Bei der Deinstallation wird bereinigt: Wird Ihre App deinstalliert, wird das System in dem gleichen Zustand wie vor der Installation wiederhergestellt, und es bleiben keine Artefakte zurück.
  • Die Art von App unterstützt auch inkrementelle und automatische Updates.
  • Außerdem ist der Microsoft Store für Apps dieser Art optimiert (obwohl Sie sie sowohl innerhalb als auch außerhalb des Stores verwendet können).
  • Dies ist ein einfacher Pfad für die Verwendung über MSIX App Attach (für virtuelle Azure Virtual Desktop-Computer). Weitere Informationen finden Sie unter Was ist MSIX App Attach?.
  • Ein signiertes Paket profitiert von starken Antimanipulationseigenschaften. Dieser Vorteil ist noch größer als für eine unverpackte App, die unter Programmeinstalliert ist.

Siehe auch den Abschnitt Windows-Paket-Manager und den WinGet-Clientabschnitt in diesem Thema.

AppContainer oder mittleres IL (Integrity Level)

Die Option zum Ausführen Ihrer App in einem AppContainer ist eine Frage der Sicherheit. Der Prozess einer AppContainer-App und seine untergeordneten Prozesse werden in einem einfachen App-Container ausgeführt, in dem sie nur auf die Ressourcen zugreifen können, die ihnen speziell gewährt werden. Und sie sind isoliert mit Dateisystem- und Registrierungsvirtualisierung. Daher können Apps, die in einem AppContainer implementiert sind, nicht gehackt werden, um bösartige Aktionen außerhalb der begrenzten zugewiesenen Ressourcen zu ermöglichen.

Verpackte oder unverpackte Apps können so konfiguriert werden, dass sie in einem AppContainer ausgeführt werden. Der Prozess ist jedoch für verpackte Apps unkomplizierter. Wenn es sich bei einer App nicht um eine AppContainer-App handelt, ist es eine App mit mittlerem IL .

Weitere Informationen zu AppContainer für Legacy-Apps finden Sie unter MSIX-AppContainer-Apps.

Informationen zum Konfigurieren Ihrer App für die Ausführung in einem AppContainer oder mit mittlerem IL:

  • WinUI 3-Apps (Windows App SDK). Siehe das uap10:TrustLevel-App-Paketmanifest-Attribut unter Konfigurieren eines WinUI 3-Projekts für AppContainer.
  • Desktop-Apps. Schauen Sie auch unter Visual Studio-Projekteigenschaft TrustLevel in MSIX AppContainer-Apps (im Abschnitt, der für Ihre Art von App geeignet ist).
  • Universelle Windows-Plattform (UWP)-Apps. UWP-Apps sind bereits für die Ausführung in einem AppContainer konfiguriert und diese Konfiguration kann nicht geändert werden.

Denken Sie daran, dass unverpackte Apps nicht über ein App-Paketmanifest verfügen. Für unverpackte Apps deklarieren Sie also Ihre AppContainer-oder-mittel-IL-Entscheidung in Ihrer Projektdatei anstelle eines App-Paketmanifests.

Win32-App-Isolation

Wichtig

Das in diesem Abschnitt beschriebene Feature ist in Vorabversionen der Windows Insider Preview verfügbar.

Die Win32-App-Isolation ist ein bevorstehendes Sicherheitsfeature in Windows, das im Falle einer Kompromittierung einer App den Schaden in Grenzen hält und die Datenschutzauswahlen des Benutzers schützt. Dieses Feature basiert auf AppContainers und Komponenten, die Ressourcen virtualisieren und vermittelten Zugriff auf andere Ressourcen bieten. Dokumentation und Tools zum Isolieren Ihrer Apps finden Sie unter Willkommen beim Win32-App-Isolations-Repository.

App-Funktionen

App-Funktionen (z. B. InternetClient, Standort, Mikrofon und Bluetooth) sind hauptsächlich für verpackte Apps, die in einem AppContainer ausgeführt werden relevant. Dies umfasst also alle UWP-Apps (Universelle Windows-Plattform) und einige Desktop-Apps.

Es gibt jedoch einige Szenarien, in denen selbst eine App mit mittlerer IL (d. h. keine AppContainer-App) eine Funktion deklarieren sollte. Ein Beispiel ist die eingeschränkte Funktion runFullTrust.

Weitere Informationen zu App-Funktionen, für welche Arten von Apps sie angewendet werden können und wie sie konfiguriert werden, finden Sie unter App-Funktionsdeklarationen. Sie konfigurieren Funktionen im App-Paketmanifest und aus diesem Grund können sie nur in verpackten Apps verwendet werden.

Arten von Apps

Desktop-Apps und UWP-Apps (Universelle Windows-Plattform) sind die beiden Hauptarten von Apps, obwohl es verschiedene Arten von Apps in der Desktop-App-Familie gibt. Die Auswahl eines Benutzeroberflächenframeworks – WinForms, WPF, Win32, Direct 2D/3D, UWP oder WinUI 3 – ist eine Option, die zu einem gewissen Grad unabhängig von den Konfigurationen ist, die in diesem Thema beschrieben werden.

Sehen wir uns jedoch an, wie sich diese App-Arten hinsichtlich Verpackung, Bereitstellung und Verarbeitung voneinander unterscheiden können.

Zunächst werden alle UWP-Apps verpackt und in einem AppContainer ausgeführt. Für Desktop-Apps sind die Dinge jedoch flexibler. Sie können ihre Desktop-App verpacken oder nicht. Unabhängig von dieser Entscheidung können Sie ihre Desktop-App entweder als AppContainer oder als App mit mittlerer IL konfigurieren.

Enthalten Unverpackt
AppContainer Desktop-Apps
UWP-Apps
Desktop-Apps
Mittlere IL Desktop-Apps Desktop-Apps

Für verpackte Apps verwenden Sie zum Konfigurieren der gewünschten App-Art das uap10:RuntimeBehavior-Attribut im App-Paketmanifest (siehe Anwendung (Windows 10)).

  • Desktop-Apps sind Windows .exes, in der Regel mit einer Haupt- oder WinMain-Einstiegspunktfunktion. Um Ihre App als Desktop-App zu konfigurieren, legen Sie uap10:RuntimeBehavior entweder auf „packagedClassicApp“ oder „win32App“ fest.
    • Der Wert „packagedClassicApp“ gibt entweder eine WinUI 3-App (Windows App SDK) oder eine Desktop-Brücken-App (Centennial) an. Der Unterschied besteht darin, dass eine Centennial-App in einem AppContainer ausgeführt wird.
    • Und „win32App“ weist auf jede andere Art von Win32-App hin (einschließlich einer App, die mit externem Speicherort verpackt ist).
  • Die Einstellung uap10:RuntimeBehavior auf „windowsApp“ bietet Ihnen schließlich eine UWP-App.

Alle Optionen für die Arten von Apps, die Sie entwickeln können, finden Sie unter Windows-App-Entwicklung: Optionen und Features.

Windows App SDK: Framework-abhängig oder eigenständig

Wenn Sie eine App entwickeln oder pflegen, die das Windows App SDK verwendet, haben Sie eine weitere Entscheidung. Da es die folgenden beiden Möglichkeiten gibt, wie Sie das Windows App SDK bereitstellen können, von dem Ihre App abhängig ist:

  • Framework-abhängig (Standardeinstellung). Ihre App benötigt das Windows App SDK-Laufzeit- und/oder das Framework-Paket, um auf dem Zielcomputer zu existieren.
  • Eigenständig. Ihre App enthält ihre Windows App SDK-Abhängigkeiten.

Weitere Informationen finden Sie in der Übersicht über die Bereitstellung des Windows App SDK.

Windows-Paket-Manager und der WinGet-Client

Ein Paket-Manager kann Ihren Benutzern helfen, Ihre Software zu installieren/zu aktualisieren/zu konfigurieren, indem sie den Workflow automatisieren. Paketmanager können bei der Installation von Software helfen, sie werden jedoch meist verwendet, um Entwicklertools zu installieren. Wenn Sie also ein Entwicklertool erstellen, interessieren Sie sich möglicherweise für diese Option. So funktioniert es:

  • Als Softwareentwickler definieren Sie für den Paket-Manager (in Form von deklarativen Anweisungen) alle Teile, die für eine erfolgreiche Installation Ihres Produkts erforderlich sind.
  • Und wenn ein Benutzer Ihre Software installiert, folgt der Paket-Manager Ihren deklarativen Anweisungen, um den Installations- und Konfigurationsworkflow zu automatisieren.

Das Ergebnis ist eine Reduzierung der Zeit für die Vorbereitung der Umgebung eines Benutzers und eine bessere Kompatibilität zwischen den installierten Komponenten. Und Sie können Windows-Paket-Manager verwenden, um Ihre verpackten oder entpackten Apps in Formaten wie .msix, .msi und .exe.

Weitere Informationen finden Sie unter Windows Package Manager.