Hands-on: MSIX Shared Package Containers erstellen

Erstellt am 14. Oktober 2021

MSIX-Lab Hands-on: Wie man einen MSIX Shared Package Container (MSPC) erstellt.

Hallo zusammen, nach einer kleinen Pause melde ich zurück aus dem MSIX-Lab und berichte heute über MSIX Shared Package Container (MSPC). Im Besonderen möchte ich hiermit folgende zwei Fragen beantworten:

  1. Was sind die Voraussetzungen für den MSPC?
  2. Wie wird ein solcher installiert?

In einem ersten Teil schauen wir die Nativ-Installation der Applikation und Plugins an. Im zweiten Teil werden wir ein Plugin in ein MSIX konvertieren und einen Dummy-Shortcut für das Plugin erstellen und im dritten Teil führen wir dann alles zusammen.

Grundlagen zum MSIX Shared Package Container (MSPC)

MSPC wurde im März 2021 von Microsoft vorgestellt, hier geht’s zur Info-Page aus dem März 2021 mit detaillierten Infos zu MSIX Shared Package Containers.

Microsoft schreibt darin (ins Deutsche übersetzt): „MSPC ermöglichen es IT-Profis, einen freigegebenen Laufzeitcontainer für MSIX-Paketanwendungen zu erstellen, der eine zusammengeführte Ansicht des virtuellen Dateisystems und der virtuellen Registrierung gemeinsam verwendet und den Zugriff auf die Paketstammdateien und den Status des anderen ermöglicht.“

Eine Voraussetzung für MSPC ist ein Windows-10-Build aktueller als Version 21354. Leider ist es so, dass Microsoft neue Features für MSIX auch immer mit einem neuen Windows-Build verknüpft. Damit wird zumindest die Ausbreitung von MSIX Packages behindert, um nicht zusagen, dass es nur noch richtig unter Windows 11 funktioniert. Das ist damit auch der Grund, warum meine Shortcuts alle von einer Insider Windows 11 VM sind.

MSPC kann genutzt werden, um einem vorhandenen MSIX-Programm Addons/Plugin hinzuzufügen. Dafür nutze ich wieder einmal Paint.net – unter anderem auch, weil es für Paint eine grössere Anzahl Plugins gibt (und weil sich die regelmässigen MSIX-Lab-LeserInnen dann mehr zuhause fühlen…). 

Die aktuelle Version von Paint findet sich hier.

Als Add-ons habe ich „BoltBait’s Plugin Pack for PdN v4.2.12 and beyond“ (EERsPluginPackv2.07) und die „pyrochild plugins“ verwendet.

Die Downloads der Plugins finden sich hier und hier.

Teil 1 – Die „Nativ“-Installation von Paint.net und Plugins

Es ist immer eine gute Praxis, Paint.Net und die zugehörigen Plugins nativ zu installieren. Ebenfalls anzumerken ist, dass Plugins immer in das Root Verzeichnis von Paint.Net installiert werden sollten.

Starten wir mit dem Erstellen einer kleinen Installationsanleitung, bevor wir mit dem MSIX Converter loslegen. 

Wir installieren Paint per Doppelklick auf den Installer, so sieht das dann ohne Plugins aus.  

Diese Ordner (Effects, FileTypes oder Shapes) nehmen später unsere Plugins auf.

Die hier verwendeten Plugins haben jeweils ein Installer.exe, welches die benötigten Dateien in die markierten Ordner kopiert. Es gibt aber auch Plugins, die aus einer Zip-Datei bestehen. Bei diesem muss man die Zip-Datei entpacken, die Installationsanleitung des Plugins lesen und dann die Dateien in den richtigen Ordner verschieben. 

Das EERsPluginPackv2.07 hat einen Exe-Installer. Wenn man diesen mit Doppelklick startet, werden die Plugins ins Appdata-Verzeichnis installiert, was für diesen Fall aber nicht beabsichtigt ist. Aus diesem Grund starte ich eine CMD-Box als Administrator und gebe folgenden Command ein:

Install.exe /iacceptthelicenseagreement /silent /plugins /shapes

Damit befinden sich die Shapes Plugins nun im entsprechenden Root Ordner von Paint.

Und hier ist das eingebundene EERsPluginPackv2.07 in Paint.net.

Beim pyrochild plugin wird der Installer direkt gestartet und ein Teil davon wird in den Effects-Folder kopiert. Das sieht dann so aus.

Und das ist schliesslich Paint.Net mit dem pyrochild plugin (es ist z.B. das Random Effect Plugin hinzugekommen). Genau so solle Paint.Net nach dem Konvertieren in ein MSIX-Paket mit den Plugins dann auch wieder aussehen.

Somit ist der erste Teil abgeschlossen. Im zweiten Teil gehen wir auf das Konvertieren ins MSIX-Format ein.

Teil 2 – Applikation in MSIX mit Plugins konvertieren

Wir paketierten Paint.net zuerst als MSIX, bevor wir die Plugins paketieren. Für allgemeine Infos und Guides zur MSIX-Konvertierung bitte hier entlang, und hier geht’s zur einfachen Anleitung zur MSIX-Konvertierung von Microsoft selbst.

Aber jedes MSIX Packages benötigt einen Entry Point (was früher bei EXEs der „Shortcut“ war). Und dieser Entry Point muss auf eine EXE-Datei zeigen. Weil die Plugins keine EXEs haben, zeigen wir mit dem Entry Point auf einen selbstgemachten DummyMSIXShortCut.exe.

Das EXE kann theoretisch leer sein, ich habe folgendes verwendet, das man sich gratis auf Github holen kann: https://github.com/clearByte-GmbH/CSHARP-DummyMSIXShortCut

Die Plugin Installer verlangen ein nativ installiertes Paint.Net. Wir laden alle benötigten Dateien in ein beliebiges Verzeichnis (in meinem Beispiel unter C:/PKG). Damit befinden sich nun alle Installationsdateien, das ClearbyteSelfSign-Zertifikat und das DummyMSIXShortCut.exe in diesem Ordner. 

Wir starten das MSIX Packaging Tool von Microsoft, ich werde im Anschluss nur die wichtigsten Fenster zeigen. 

Wir geben den Pfad zum Zertifikat an…

….und vergeben einen Namen für das Package.

Done.

Wie im ersten Teil erwähnt, brauchen wir ein CMD-Fenster und starten die Installation mit folgendem Befehl

Install.exe /iacceptthelicenseagreement /silent /plugins /shapes

Wir erstellen einen Ordner im Paint.NET Verzeichnis, z.B. Paint.NET\EERsPluginPackv2.07, in das wir den DummyMSIXShortCut.exe verschieben.

Dann erstellen wir im Start Menu\Programs auch noch einen Ordner fügen dort als Shortcut das DummyMSIXShortCut.exe aus dem oben erstellten Ordner hinzu.  

Wenn alles erledigt ist, sieht das dann so aus. Weiter geht’s im MSIX Packaging Tool.

„Next“ klicken.

Wie gewünscht erscheint nun das DummyMSIXShortCut.exe als Entry Point. „Next“ klicken.

„Yes, move on“ klicken, dann zwei Mal weiter bis zu folgenden Fenster.

Den Package Editor öffnen, um zu checken, dass die Plugin Dateien auch im richtigen Verzeichnis liegen.

Und wenn wir schon mal hier sind, machen wir gleich noch ein bisschen „House Keeping“ und löschen alle gelb markierten Ordner, die wir nicht brauchen.

Das Package sieht jetzt so aus, was ja auch der vorhanden nativen Installation aus dem ersten Teil entspricht. Nur die Dateien im Paint.Net Verzeichnis und der Dummy Shortcut müssen vorhanden sein, sonst nichts.

Das Konvertieren des zweiten Plugins pyrochild.plugins.installer.2020-11-21 erfolgt genau gleich, einzig die VM muss davor zurückgesetzt werden. Wichtig: Nicht vergessen, den Dummy Shortcut auch hier noch zu erstellen

Teil 3 – Shortcuts ausblenden, Packages verlinken, Testen

Wir starten zum Anfang eine neue VM und kopieren alle erstellten MSIX Packages in den PKG Ordner auf C:, im Anschluss installieren wir alle MSIX-Pakete (sowohl Paint wie auch die Plugins). Das Selfsign Certificate muss ebenfalls noch installiert werden.

Paint.net als MSIX – zu sehen am Menüpunkt „App Settings“. 

Die beiden Plugins sind ebenfalls installiert, im Startmenü sehen wir diese dank dem Dummy Shortcut ebenfalls. Doch eigentlich brauchts diese ja bloss für die Paketierung, die Shortcuts sollten also noch ausgeblendet werden. 

Ausblenden der Plugin Shortcuts und Update des Packages

Wir öffnen nun das EERSPaintPluginPack_1.0.0.0_x64__vf59x763w1qwm mit dem MSIX Konverter Tool per Rechtsklick auf das File.

Unter „Package information“ finden wir ganz unten „Open file“.

In der Manifest-Datei finden wir nun die Sektion Applications\Application\uap:VisualElements und darin die Description=“DummyMSIXShortCut“.

Am Ende fügen wir nun folgen Anweisung an: AppListEntry=“none“

Nun die Datei speichern, schliessen und im MSIX Packaging Tool auf „Save“ klicken. Bei der Prompt zur Versionierung „Yes, increment“ wählen, abspeichern, schliessen. 

Nun können wir das EERSPaintPluginPack_1.0.1.0_x64__vf59x763w1qwm starten. Was an MSIX super ist: Es wird erkannt, dass Version 1.0.0.0 schon vorhanden ist und versucht nun, Version 1.0.1.0 zu installieren, wir klicken auf „Update“. 

Exakt das Gleiche wiederholen wir mit dem pyrochild plugin. 

Und die beiden Dummy-Shortcuts sind wie gewünscht verschwunden. 

Packages verlinken (Shared Container erstellen)

Zuerst müssen alle MSIX Pakete, in diesem Fall Paint.net und die beiden Plugins, installiert sein.

Zum Start brauchen wir den PackageFamilyName. Diesen erhalten wir mit dem Powershell Befehl: PS:>  Get-AppxPackage -Name *Paint*

Denselben Schritt wiederholen wir für alle Plugins, bis wir von jedem Element den PackageFamilyName haben.

Nun erstellen wir eine XML Datei, diese heisst bei mir Paintdeployment.xml und hat den folgenden Inhalt mit den PackageFamilyNames:

<?xml version="1.0" encoding="utf-8"?>
<AppSharedPackageContainer Name="CBPaintMSIXContainer">
<PackageFamily Name="PaintNetMSIXContainer_vf59x763w1qwm"></PackageFamily>
<PackageFamily Name=" EERSPaintPluginPack_vf59x763w1qwm"></PackageFamily>
<PackageFamily Name="PaintDotNetpyrochildplugin_vf59x763w1qwm"></PackageFamily>
</AppSharedPackageContainer>

WICHTIG: Das Zusammenführen erfolgt von oben nach unten, es ist also sehr wichtig, dass die Hauptapplikation (Paint) zuoberst steht. 

Mit dem Powershell-Befehl PS:> Add-AppSharedPackageContainer -Path „C:\PKG\Paintdeployment.xml“ erhalten wir nun diese Meldung. 

Öffnen wir also Paint und schauen, ob die Plugins vorhanden sind… Und wir sehen die Plugins! Success!

Damit ist es nun auch möglich, Plugins in einem MSIX-Päckli zu verteilen. Ich wünsche euch allen viel Erfolg und Spass beim Ausprobieren!

-Peter

Erstellt am 14. Oktober 2021

Vielleicht auch interessant…

This Area is Widget-Ready

You can place here any widget you want!

You can also display any layout saved in Divi Library.

Let’s try with contact form: