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 einigen MS-Leuten zu sprechen, die hinter #MSIX stehen. Ebenfalls wurde letzte Woche eine neue Version von RayPack Studio veröffentlicht, die einige Verbesserungen hinsichtlich der MSIX-Konvertierung in Version 6.1 mit sich bringt. Mit diesem Beitrag möchte ich einen kurzen Überblick verschaffen, wie man von so genannten Legacy-Installationen (traditionell alle setup.exe und dergleichen, in jüngster Zeit wurde sogar 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 über die lokale Repaketierung gehen. Ich werde nun Folgendes machen:

  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:

{:de}Neues MSIX Projekt{:}{:en}New MSIX project{:}

Wählen Sie den Firefox-Installer aus 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:

 

{:de}MSIX Projekteinstellungen{:}{:en}MSIX Project settings{:}

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

 

{:de}MSIX Repaketierung{:}{:en}MSIX repackaging{:}

Die Standardeinstellungen sind ausreichend, aber in den meisten Fällen ist es sinnvoll das Laufwerk C, HKLM und die HKCU-Registrierungsschlüssel zu aktivieren. Die Liste “RayPack-Aggressive” ist standardmäßig deaktiviert, aber meiner Meinung nach sollten Sie diese aktivieren, damit 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.

{:de}MSIX Installierungsvorgang{:}{:en}MSIX installation process{:}

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

  • Automatische Updates deaktivieren
  • Wartungsdienst deaktivieren
  • “Erster Start”-UI überspringen
  • Einrichten der Standard-Startseite

… und so weiter.

Wenn Sie fertig sind, können Sie einen zweiten Snapshot machen. Nach 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!

{:de}MSIX Projektübersicht{:}{:en}MSIX Project overview{:}

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
  • Registry
  • Tastenkombinationen

In Abhängigkeit zur Anzahl der zuvor ausgewählten Ausschlusslisten, 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 Auslassen 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.

Zurück zu Firefox: Für diese Repaketierung 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.

{:de}MSIX Projektinhalt{:}{:en}MSIX project content{:}

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:

{:de}MSIX Paket{:}{:en}MSIX package{:}

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.

{:de}Applikation installieren{:}{:en}Install application{:}

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. Wählen Sie das Paket mit einem Doppelklick aus und wählen Sie “Install” aus. 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.

{:de}fertiges MSIX Paket{:}{:en}finished MSIX package{:}

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. 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.

Allerdings:

  • 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ü