App-V, AppX und MSIX eine Evolution?

Sebastian Gernert - Escalation Engineer für App-V für App-V hat vor Kurzem seinen App-V Blog in den Modern App Blog „M.A.D“ umbenannt, um dem neuen Verteilungsverfahren und den „Modern Apps“ in Windows 10 mehr Gewichtung zu geben. In diesem Zusammenhang sprechen wir auch über UWP (Universal Windows Plattform) oder auch über Universal Apps. Diese sind auf diversen Microsoft Plattformen verteilbar.
Für mich ein Grund, einmal auf die verschiedenen Verfahren näher einzugehen. Bisher war es für uns meistens so, dass wir die meisten AppX Anwendungen vor einem RollOut aus den System herauslöschen.

WindowsUniversalApp

 

Nun, was ist eine „Moderne Applikation?

Mit Windows 8 kam das App-X Dateiformat und der Microsoft Store in das Betriebssystem. Diese Anwendungen liegen in einem geschützten Containerverzeichnis. Das hat den Vorteil, dass Berechtigungen beispielsweise für die Kamera oder das Adressbuch auch für Windows Systeme wie bei einem Mobiltelefon für so eine Modern App vergeben werden können. In jedem Container befindet sich eine Datei AppXManifest.xml

(i.d.R. C:\Program Files\WindowsApps\)

Beispielsweise StickyNotes:

Microsoft.MicrosoftStickyNotes_2.1.18.0_x64__8wekyb3d8bbwe

03.05.2018 07:47 53.059 AppxBlockMap.xml
03.05.2018 07:47 19.312 AppxManifest.xml
03.05.2018 07:47 <DIR> AppxMetadata
03.05.2018 07:48 10.641 AppxSignature.p7x
03.05.2018 07:47 <DIR> Assets
11.12.2016 08:24 65.720 clrcompression.dll
13.12.2017 14:10 948.736 e_sqlite3.dll
15.10.2017 19:13 1.912.464 Microsoft.Graphics.Canvas.dll
13.12.2017 14:07 288.408 Microsoft.Graphics.Canvas.winmd
03.05.2018 07:48 26.568.704 Microsoft.Notes.dll
03.05.2018 07:48 21.504 Microsoft.Notes.exe
03.05.2018 07:48 381.440 Microsoft.Notes.Upgrade.dll
03.05.2018 07:48 3.584 Microsoft.Notes.Upgrade.winmd
03.05.2018 07:47 <DIR> Microsoft.Notes.Views
03.05.2018 07:47 <DIR> Microsoft.Toolkit.Uwp.UI.Controls
03.05.2018 07:47 <DIR> Resources
03.05.2018 07:48 261.008 resources.pri
03.05.2018 07:48 631.296 RuntimeConfiguration.dll
03.05.2018 07:48 13.824 RuntimeConfiguration.winmd
13.12.2017 14:10 1.517.568 sqlite3.dll

In aktuellen Windows10 Versionen sind inzwischen annähernd 100 AppX Applikationen enthalten. Darunter auch viele Laufzeitumgebungen und Middleware-Komponenten. Aber leider auch viele Apps, die nur zu Werbezwecken mit integriert wurden.

In der Powershell kann man sich dazu leicht eine Übersicht verschaffen

(Get-AppxPackage).name

Die AppXMainifest.xml Datei beinhaltet Informationen zu der Anwendung, den Verknüpfungen und auch zu den Abhängigkeiten eines AppX Containers. Es gibt eine Blockmap.xml mit Informationen zu den Dateien versehen mit digitalen Signaturen. Ein AppX Paket wird zunächst als einzelne Datei ausgeliefert und ist ZIP komprimiert. Durch die internen Signaturen kann so ein Paket jedoch nicht leicht neu erstellt werden.

App-V 5.x basiert auf dem AppX Format

Nun wurde Ende 2012 das alte App-V 4.6 durch App-V 5 abgelöst. So ein App-V Containerfile ist im Grunde ganz ähnlich aufgebaut wie eine AppX Container. Es gibt ein AppXManifest in jeder „.appv“ Datei. Diese wurde um den AppV Namensraum erweitert, um die Virtualisierung für die Anwendungen mit zu berücksichtigen. Beispielsweise zur Integration von COM Komponenten. Auch eine Blockmap.xml findet sich in einem App-V Paket. Zusätzlich aber auch eine Registry.dat Datei mit der virtuellen Registrierung einer App-V Anwendung.

Als Vorteil kommt hinzu, dass wir App-V Anwendungen über eine eigene Infrastruktur fast in Echtzeit für den Benutzer bereitstellen können. Zusätzlich haben wir mit der Anwendungsvirtualisierung die Option der Anwendungsisolation und können damit viele Probleme der Anwendungsbereitstellung im Unternehmensumfeld lösen (Java Versionen mischen, DLL Hell etc.).

MSIX APPV Stack

MSIX, das neue Format

Bei der Microsoft Build Konferenz sollte etwas Neues verkündet werden. Das war den lesern des deutschen App-V Blog schon seit einiger Zeit bekannt. In der Tat wurde nun das neue Dateiformat MSIX Angekündigt. Doch was ist MSIX?
MSIX ist zunächst als Ersatz für das allgegenwärtige MSI-Format gedacht. Es basiert wiederum auf einem AppX ähnlichen Zip komprimierten Dateiformt (UWP). Dieses enthält benötigte Dateien, Registrierungsinformationen, Konfigurationsdateien (ein Manifest) und digitale Signaturen. Das AppX Dateinformat wird im MSIX um zusätzliche Schemadefinitionen ergänzt, um hier nun beispielsweise MSI Dateien oder auch App-V Pakete in das neue Format zu konvertieren und als MSIX Paket zu verteilen. Für jede Änderung sind spezielle Editoren notwendig. Es wird auch eine Integration in das Visual Studio geben. Hersteller von Paketierungswerkzeugen sind dazu angehalten mit ihren Produkten das neue Format zu unterstützen.
Für die Unternehmensadministration ist entscheidend, dass vorhandene Anwendungspakete in das neue Format überführt werden können, um die Verteilung zu vereinheitlichen. Eine Verteilung kann dann später beispielsweise über einen unternehmenseigenen Store erfolgen (aber auch mit konventionellen Installationstechniken).

Ob nun ein überführtes App-V Paket auch ein virtualisiertes Paket ist oder erst einmal nur in einem Container läuft ist mir persönlich nicht ganz klar. App-V Pakete können expandiert werden mit Expand-AppVClientPackage. Das würde einer physikalischen Installation entsprechen. In dieser Form kann die DesktopBrige (eine Art Sequencer für AppX) mein Paket auch leicht nach MSIX konvertieren. Ist das hier der Ansatz?

https://developer.microsoft.com/de-de/windows/bridges/desktop 
https://developer.microsoft.com/en-us/windows/bridges/desktop 

Es wird weitere Werkzeuge geben, wie das "Package Support Framework“, um die Paketerstellung zu erleichtert.

Die Quellen zu dem MSIX Building Tool liegen quelloffen auf Gitup und wie es scheint soll es nun eine echte „Universal Plattform“ werden. Denn diese können auch für den Mac und für Linux kompiliert werden. Aktuell scheint mir das alles noch sehr im Alpha Stadium zu sein. Ich habe etwas damit experimentiert und einen Build erstellt. Funktionierende Pakete konnte ich damit noch nicht bauen. Aber wir bleiben dran.

Soll ich nun mein App-V Projekt aufgeben und auf MSIX warten?


Nein, aus meiner Sicht hat ein Kunde mit App-V schon alle Vorteile. Das Dateiformat ist ähnlich, wie haben mit der Microsoft App-V Infrastruktur ein zentrales Management und zusätzlich die Anwendungsvirtualisierung.

App-V ist ausgreift. Die meisten Anwendungen funktionieren nach der Sequenzierung und durch die ausgereiften externen Konfigurationsdateien kann ein App-V Paket leicht an neue Umgebungen angepasst werden, beispielsweise den Austausch von ODBC Informationen über externe Konfigurationsdateien um mit einem Paket eine Test- und Produktivumgebung abzudecken.

Funktionen wie einen Shared Content Store Mode für Terminalserver kann ich für MSIX aktuell nicht erkennen. Möglicherweise werden wir aber später die volle Funktionalität auch mit MSIX bekommen. Aktuell haben wir diese Funktionen ausgereift mit App.V 5.1/5.2 (Windows 10). Ob diese Pakete unter Windws 7 funktionieren, ist für mich auch noch ein großes Fragezeichen. Mit App-V wird das auch noch in den nächsten Jahren funktionieren. Anwendungen im Store bedeuten u.U. auch automatische Updates aus dem Store. Die wollen wir im Unternehmensumfeld nicht. Wie kann ich den Verteilungsprozess aktuell steuern? Mit App-V funktioniert das sehr gut. Wie kompatibel wird MSIX gerade bei Altanwendungen sein? App-V hat diese inzwischen meistens auch sehr gut im Griff. Vielleicht wird MSIX für App-V auch nur ein Wrapping bedeuten. Also mit PowerShell Befehlen im Paket wird wieder ein App-V Paket verteilt. Dann wäre alles nur ein großer Scherz.

Fazit: Wir stehen mit MSIX nicht einmal am Anfang. Jetzt heißt es einige Jahre abwarten und schauen, was passiert. Inzwischen machen wir und unsere Kunden mit App-V weiter wie bisher. Keine Frage, MSIX ist ein sehr interessanter Ansatz. Insbesondere für Neuentwicklungen oder wenn eine MSI Verteilung modernisiert werden soll. Für App-V heißt es erst einmal abwarten und auch für MSI, denn aktuell muss Microsoft noch viel Arbeit in das Produkt investieren. Dabei bleibt App-V durch das AppX basierende Dateiformat zukunftssicher.