Erstellen von MSIX-Paketen mit RayPack 6.1

Geschrieben von Marcin Otorowski, Senior Developer und Lead Program Manager von RayPack Studio.

Letzte Woche war ich in London und hatte die Gelegenheit, mit ein paar MS-Leuten zu sprechen, die hinter #MSIX stehen. Ebenfalls letzte Woche wurde eine neue Version von RayPack Studio veröffentlicht, die einige Verbesserungen bezüglich der MSIX-Konvertierung in der neuesten Version 6.1 bringt. Mit diesem Beitrag wollte ich einen kurzen Überblick verschaffen, wie man von so genannten Legacy-Installationen (traditionell alle setup.exe und dergleichen, in jüngster Zeit wurde das Windows Installer-Format zu dieser Gruppe gezählt) zu der neuen, modernen und originalen Windows-10-Methode der Installation und Wartung von Apps übergeht.

Es gibt eine Möglichkeit, all dies auf einer virtuellen Maschine über das PackBot-Modul zu realisieren, aber der Einfachheit halber werde ich den einfachen Weg gehen, mit lokaler Repaketierung. Ich komme nun zu folgenden Punkten:

  1. Meine Systemumgebung einrichten
  2. Erstellung des ersten Snapshots
  3. Firefox installieren und konfigurieren
  4. Erstellung des zweiten Snapshots
  5. Vergleich der Schnappschüsse, Erstellung von RCP (RayPack Capture Project)
  6. Bereinigung des Projekts, Entfernung veralteter Ressourcen und Betriebssystembelastungen
  7. Die Signiereinrichtung einrichten
  8. Erstellen und Ausführen von MSIX-Dateien

Nachdem Sie RayPack gestartet haben, gehen Sie zu FILE > New > Repackaging, um den Wizard für die Repaketierung zu öffnen:

Neues MSIX Projekt

Wählen Sie den Firefox-Installer und passen Sie die erforderlichen Felder nach Bedarf an. Dabei verwende ich immer den erweiterten Modus (siehe Bild unten), der alle Bildschirme und Einstellungen unterstützt:

 

MSIX Projekteinstellungen

Das Snapshotting und die Installation sind denkbar unkompliziert – einfach das Installationsprogramm auswählen und mit einem Klick auf die folgende Seite gelangen:

 

MSIX Repaketierung

Die Standardeinstellungen sind ausreichend, in den meisten Fällen ist es sinnvoll, nur C-Laufwerk, HKLM und HKCU-Registrierungsschlüssel zu aktivieren. Die Liste “RayPack-Aggressive” ist standardmäßig deaktiviert, aber meiner Meinung nach sollten Sie sie aktivieren, da sie das spätere Clean-up erleichtert.

Sie sollten die Berechtigungsprüfung nicht aktivieren. Dies mag für einige IT-Profis nützlich sein, aber im Falle einer Repaketierung nach MSIX beansprucht dies nur Systemressourcen und bringt keinen Mehrwert.

Fahren Sie anschließend mit dem nächsten Schritt fort, bis das Setup gestartet wird.

MSIX Installierungsvorgang

Die Installation erfordert keine besondere Aufmerksamkeit. Danach können Sie Firefox starten und ein paar Dinge konfigurieren wie:

  • Automatische Updates deaktivieren
  • Wartungsdienst deaktivieren
  • Erstlauf-UI überspringen
  • Einrichten der Standard-Startseite

… und so weiter.

Wenn Sie bereit sind, machen Sie einen zweiten Schnappschuss. Nach einer Weile und der Akzeptierung der Übersichtsseiten wird das repaketierte Projekt geöffnet. Das Projekt selbst ist nicht in einem bestimmten Format (MSI oder MSIX), sondern hat eine lose Dateistruktur mit einer XML-Definition, die die Quellen und Metadaten verknüpft. Von diesem Projekt aus ist es möglich, zu MSI, MSIX, App-V und einigen anderen von RayPack angebotenen Formaten zu wechseln. Ich persönlich finde es nützlich, das Projekt für eine weitere Bezugnahme zu speichern, da manchmal die Bereinigung zu vielen Ressourcen einen Neuaufbau erfordert – was einfach ist, wenn Sie Ihr Quellprojekt haben!

MSIX Projektübersicht

Dies ist der Zeitpunkt, an dem ein abschließendes Clean-up und Review stattfinden sollte. Stellen Sie sicher, dass die Werte (wie Produktname, Version und Hersteller) korrekt sind, und schauen Sie sich die Zahlen in der Projektübersicht an, um einen ersten Überblick über den Inhalt des Pakets zu erhalten.

Es gibt in diesem Zusammenhang mindestens drei Ansichten, die jetzt von Interesse sein sollten:

  • Dateien und Ordner
  • Register
  • Tastenkombinationen

Je nachdem, wie viele Ausschlusslisten zuvor ausgewählt wurden, erhalten Sie möglicherweise sofort einen sauberen Status oder einen Wert, der ein manuelles Eingreifen erfordert. Wenn Sie eine Ressource sehen, die nicht zur neu installierten App gehört (z.B. Störungen des Betriebssystems, Windows Updates, Antivirus usw.), schließen Sie diese einfach aus, indem Sie mit der rechten Maustaste auf das entsprechende Element klicken und die richtige Option auswählen.

Im Übrigen – dieser Clean-up-Schritt war früher viel wichtiger für die MSI-Paketierung bzw. jede andere Paketierung für einen sogenannten “Fat-Client”. Der Verzicht auf unnötige Ressourcen kann später zu gravierenden Konflikten führen. Erfreulicherweise, da das MSIX-Format auf einem virtualisierten Dateisystem arbeitet, hätte das Hinterlassen zu vieler Ressourcen nicht diese große Auswirkung, außer der Verunreinigung des Pakets mit überflüssigen Ressourcen (was bedeutet, dass es größer wird) und alle DLL- oder anderen Ressourcenkonflikte werden nur auf das aktuelle Paket übertragen, wodurch das System intakt bleibt. Dennoch ist es immer noch wichtig, dass das MSIX-Paket sauber und so leicht wie möglich ist, weshalb ich die Relevanz dieses Schrittes nicht unterbewerten möchte.

Nun, zurück zu Firefox, für diese Neuverpackung habe ich im Maintenance Service von Mozilla nichts geändert. Deshalb sollten Sie es einfach von RCP ausschließen, bevor die endgültige Konvertierung stattfindet.

MSIX Projektinhalt

Wiederholen Sie das Clean-up für Registry und Services. Das sollte jetzt ziemlich einfach sein.

Bevor wir weitermachen, müssen noch einige Konfigurationen vorgenommen werden. MSIX-Pakete müssen digital signiert sein, sonst kann der Benutzer sie nicht installieren (und somit ausführen). Damit dies funktioniert, müssen wir unsere digitale Signatur konfigurieren mit der wir RayPack darüber informieren.

Wenn Sie bereits .cer- und.pfx-Dateien (+ optionales Passwort dafür) haben, können Sie direkt zum Bildschirm SETTINGS > Tagging + Signatur gehen, auf dem die entsprechenden Eingaben vorgenommen werden können.

Andernfalls können Sie Ihr eigenes persönliches Zertifikat zum Testen erstellen (auch bekannt als Self-Signing). Es gibt mehrere Möglichkeiten, dies zu tun, ich bevorzuge es, das folgende PowerShell-Skript zu starten:

$publisher = “CN=”;
$friendlyName = “”
$password = “”
$targetFolder = Join-Path -Path $PSScriptRoot -ChildPath “Generated”;
$certName= “”
 
if (-not (Test-Path $targetFolder))
{
    New-Item $targetFolder -ItemType Directory | Out-Null;
}

$pfxName= Join-Path -Path $targetFolder -ChildPath “$certName.pfx”;

$cerName= Join-Path -Path $targetFolder -ChildPath “$certName.cer”;

$pwdName= Join-Path -Path $targetFolder -ChildPath “$certName.pass”;

Ersetzen Sie die Platzhalter durch die von Ihnen benötigten Werte und führen Sie diese aus. Im Arbeitsordner sollten Sie drei Dateien erhalten, die das Zertifikat, den privaten Zugriffsschlüssel und das Passwort zum Signieren enthalten. Stellen Sie sicher, dass Sie das Zertifikat in einen vertrauenswürdigen Ort auf dem Entwicklungs-/Testcomputer importieren (ein einfacher Doppelklick und die Auswahl eines zertifizierten Speichersorts ist ausreichend). Natürlich sind selbstsignierte Zertifikate keine Option für die Erstellung, für Unternehmen könnten ihre vertrauenswürdigen Zertifikate über GPO oder andere Mittel verteilt werden, und die Signatur selbst kann aufgeschoben und durch andere Dienste durchgeführt werden.

Sobald das Zertifikat zur Verfügung steht und vertrauenswürdig ist, gehen Sie zu FILE > Settings > Signing + Tagging und konfigurieren Sie es entsprechend.Diesen Schritt müssen Sie einmalig ausführen (genauer gesagt: einmal für jedes Profil). Nachdem die Signatur eingerichtet ist, können Sie so viele MSIX-Pakete erstellen, wie Sie möchten, ohne in den Projekten etwas zu ändern. RayPack übernimmt die schwere Last von Ihnen, indem es die Manifestwerte entsprechend anpasst.

Sobald der Schritt abgeschlossen ist, ist es an der Zeit, unser Paket zu generieren. Drücken Sie FILE, wählen Sie Build und dann MSIX-Paket aus der Liste der verfügbaren Formate:

MSIX Paket

Wählen Sie den Ort, an dem das Paket gespeichert werden soll, und klicken Sie auf OK. Nach einer Weile sollte die MSIX-Datei verfügbar sein.

Applikation installieren

Versuchen Sie, es zu testen. Wechseln Sie zu einem sauberen Desktop (ohne vorher installiertem Firefox). Stellen Sie sicher, dass das von uns erstellte Zertifikat durch dieses Gerät als vertrauenswürdig eingestuft wird. Doppelklicken Sie auf das Paket und wählen Sie Install. Es dauert nur wenige Sekunden, um die Quellen zu ziehen und die Anwendung zu registrieren. Beachten Sie, dass Sie dazu kein Administrator sein müssen, da alle MSIX-Installationen im Per-User-Kontext registriert sind.

Sie können nun auf Start klicken, um Ihren Firefox aus dem MSIX-Paket heraus auszuführen.

fertiges MSIX Paket

Voilà, das Programm läuft einwandfrei! Es gibt noch einige Bereiche, die einen erneuten Blick erfordern können (und in diesem Tutorial aus Gründen der Übersichtlichkeit weggelassen wurden), vor allem in Bezug auf die Deaktivierung bestimmter Optionen, das Anpassen der Profile, das Anpassen weiterer Metadaten usw. Zusätzlich gibt es eine ziemlich gute Unterstützung für die VM-Integration (Hyper-V, ESXi und Workstation), die einige Schritte mit einem einfacheren Setup auf einem sauberen VM-Image erleichtert.

Hiermit endet dieses kleine Tutorial. Für viele Apps ist die Konvertierung denkbar einfach und erfordert keine speziellen Kenntnisse. Das Tooling Ecosystem wird ständig verbessert, und die nächsten und kommenden Features von MSIX sollten es einfacher machen, mehr Apps ohne zusätzliche Optimierungen laufen zu lassen.

Es gibt einige große Vorteile von MSIX, darunter:

  • Schnelle, zuverlässige und saubere Installation, Deinstallation und Reparatur.
  • Installation per Benutzer, die keine UAC-Anfragen erfordert.
  • Sicherheit durch Konkurrenzsituation (Windows 1809 und neuer).
  • Möglichkeit, Pakete in den Microsoft Store oder Store for Business zu verschieben.
  • Möglichkeit der einfachen Erweiterung und Anpassung von Anwendungen über so genannte Modification Packages (sowohl für Entwickler als auch für IT-Profis).
  • Integrierte Shimming-Engine (benutzt Detours), mit der einige der häufigen Problemen in Apps selbst behoben werden können (Package Support Framework).
  • Open Source!
  • Selbst alte Legacy-Anwendungen (siehe Ausnahmen oben) können ohne Änderung des Binärcodes oder Neukompilierung in MSIX umgewandelt werden.

Auf der Kontrastseite:

  • Nicht alle Apps können konvertiert werden. Sie sollten sich über Dienste, die derzeit nicht unterstützt werden, und alle Einschränkungen, die App-V mit sich bringt (Treiber, IPC über die Registry etc.), im Klaren sein.
  • Vollständiger Support ist nur für Windows 10 1809 und neuer verfügbar. Frühere Versionen von Windows 10 werden wahrscheinlich bald unterstützt (1709 und 1803). Windows 7 und Windows 10 werden nur über MSIX Core verfügbar sein, was keine Konkurrenzfähigkeit bietet und somit viele Vorteile gegenüber älteren Technologien aufhebt.
  • Das Format selbst ist etwas umfangreich, und die Dokumentation an vielen Stellen schlecht oder widersprüchlich. Sie sollten sich lieber an Tools von Microsoft oder ISVs wie RayPack halten.
  • Im Vergleich zu App-V scheint es eine Teilmenge von Features zu geben, die MSIX nicht unterstützt, z.B. Skripting vor dem Start (dies kann sich in Zukunft ändern, aber beachten Sie, dass einige Dynamiken derzeit nicht so einfach out-of-the-box unterstützt werden).

Ich freue mich sehr auf die weitere Entwicklung von MSIX und seinem Ecosystem. Die Technologie ist vielversprechend und stellt bisher eine der wichtigsten Änderungen in der Softwareverteilung seit 20 Jahren dar, letztere ist Windows Installer von MS Team.

Menü