1 Punkte von kck4156 3 시간 전 | Noch keine Kommentare. | Auf WhatsApp teilen

MSIX ist das moderne Paketformat von Windows. Es arbeitet sandboxbasiert, sodass Systemänderungen wie Registry-Einträge oder Dateizuordnungen isoliert werden; bei der Deinstallation bleiben keinerlei Reste zurück. Mit MSIXBundle lassen sich außerdem x64, x86 und ARM64 in einer einzigen Datei bündeln.

Das Problem ist die Verteilung.

Wenn man MSIX außerhalb des Stores installieren will, müssen Nutzer den Entwicklermodus aktivieren, PowerShell öffnen und ein Zertifikat als vertrauenswürdig einstufen. Für Entwickler ist das ein selbstverständlicher Ablauf, für normale Nutzer sind das alles Hürden. Selbst wenn man Apps mit Electron oder Tauri baut, gibt es viele Frameworks, die MSIX-Packaging nicht unterstützen.

Deshalb habe ich es gebaut. MSIX Installer Generator ist ein Tool, das alles vom MSIX-Packaging bis zur Erstellung eines per Doppelklick installierbaren EXE-Installers in einem Schritt erledigt.

Wie es angefangen hat

Ursprünglich hatte dieses Projekt nichts mit MSIX zu tun.

Um eine mit WinUI 3 erstellte App außerhalb des Stores zu verteilen, arbeitete ich an einem Installer-Framework, das ein eigenes Paketformat namens .atp verwendet. Die Struktur war: mit 7z komprimieren und an den Installer übergeben; der Installer erledigt dann Dinge wie Registry-Registrierung oder das Erstellen von Startmenü-Verknüpfungen. Für einfaches EXE-Packaging funktionierte das ziemlich gut.

Dann kam mir plötzlich der Gedanke: „Wenn MSIX sogar Sandboxing unterstützt, wie wäre es, daraus einen Installer zu machen?“ Der bisherige .atp-Ansatz ist zwar praktisch, ist aber letztlich eine traditionelle Installationsmethode, die direkt in die Registry schreibt und Ordner in AppData anlegt – eine saubere Deinstallation ist damit nicht garantiert. Mit MSIX isoliert Windows alles automatisch in einer Sandbox, und beim Entfernen bleiben keine Reste zurück.

Also begann ich, Unterstützung für MSIX-Installation hinzuzufügen. Dabei zeigte sich jedoch das Problem, dass Nutzer Zertifikate erstellen, Manifeste schreiben und das Packaging komplett selbst erledigen müssen. Außerdem unterstützen viele Frameworks kein MSIX-Packaging. Am Ende entstand daraus ein Tool, das auch das Packaging automatisiert; inzwischen erledigt es alles vom MSIX-Packaging bis zur Konfiguration des EXE-Installers in einem Rutsch.

Welches Problem ich lösen wollte

Beim Verteilen per MSIX war die User Experience einfach zu schlecht.

  • „Aktivieren Sie den Entwicklermodus“ → Nutzer sind verunsichert
  • „Öffnen Sie PowerShell als Administrator und geben Sie diesen Befehl ein“ → noch mehr Verunsicherung
  • „Vertrauen Sie diesem Zertifikat“ → maximale Verunsicherung

Ich wollte sowohl die Einfachheit eines klassischen EXE-Installers, bei dem ein Doppelklick genügt, als auch die Sandbox-Vorteile von MSIX haben.

Was MSIX Installer Generator macht

Im Wesentlichen zwei Dinge.

1. MSIX-Packaging

Zertifikatserstellung, Manifest-Erstellung und Packaging der Build-Ausgabe werden über eine GUI erledigt. Selbst wenn ein Framework kein MSIX-Packaging unterstützt, reicht es, den Build-Ausgabeordner anzugeben. Fügt man Ordner für verschiedene Architekturen wie x64 oder ARM64 hinzu, liest das Tool die PE-Header, erkennt sie automatisch und erzeugt eine einzelne .msix-Datei oder ein Multi-Architektur-.msixbundle.

2. EXE-Installer-Konfiguration

Das erzeugte MSIX wird in einen eigenständigen EXE-Installer umgewandelt, der sich mit einem Doppelklick installieren lässt. Alle für Sideloading nötigen Schritte – etwa Zertifikatsinstallation und Abhängigkeitsbehandlung – übernimmt der Installer automatisch. Aus Nutzersicht reicht es, den Installer herunterzuladen und auszuführen. Es erscheinen weder PowerShell noch Entwicklermodus noch Zertifikats-Prompts.

Es gibt auch ein CLI-Tool

Neben der GUI habe ich auch ein CLI-Tool (aticmsixgen) auf NuGet veröffentlicht. In CI- oder KI-Automatisierungs-Workflows lassen sich MSIX-Packaging und EXE-Konfiguration vollständig über die Kommandozeile erledigen. Es ist mit NativeAOT gebaut und eine einzelne ausführbare Datei ohne Runtime-Abhängigkeiten.

dotnet tool install --global aticmsixgen  

Zertifikatserstellung, Manifest-Erstellung, MSIX-Packaging und EXE-Konfiguration funktionieren komplett über die CLI.

Für wen es gut passt

  • Wer per MSIX verteilen möchte, aber den Sideloading-Ablauf als Hürde empfindet
  • Wer Frameworks wie Electron, Tauri oder WPF nutzt, die MSIX-Packaging nicht standardmäßig unterstützen
  • Wer mehrere Architekturen wie x64 und ARM64 mit einem einzigen Installer verteilen möchte
  • Wer MSIX-Packaging und EXE-Konfiguration in CI automatisieren möchte

Links

Es steht unter der MIT-Lizenz; Feedback oder Issues könnt ihr auf GitHub hinterlassen. Auch auf Koreanisch ist das in Ordnung.

Noch keine Kommentare.

Noch keine Kommentare.