FAQ
Fragen, die Entwicklungs- und Release-Teams zuerst stellen.
Lizenzierung, Abhängigkeiten des Build-Agenten, Signierung und der Unterschied zur Capture-First-Route für Legacy-Anwendungen.
Ist das dasselbe wie Ihre Legacy-Anwendungserfassung?
Nein, und der Unterschied ist wichtig. Capture-First-Paketierung existiert für Anwendungen, deren Installer verloren ist, sodass die laufende Anwendung zur Quelle der Wahrheit wird. Diese Route setzt das Gegenteil voraus: Sie haben einen intakten Build-Ordner und wollen ihn als Pipeline-Schritt paketiert, signiert und validiert haben. Beide teilen sich am Ende denselben Signier-, Validierungs- und Intune-Auslieferungsweg, weshalb Umgebungen mit zugekaufter und selbst gebauter Software eine Route für beides nutzen können.
Brauchen wir eine Lizenz, um es in unserer Pipeline zu nutzen?
Nicht für die makeappx-kompatiblen Befehle. Packen, Entpacken, Bundling, Unbundling, Validieren und Ressourcen-Indizierung sind lizenzfrei, forge_msix funktioniert also als echter Drop-in-Ersatz für makeappx.exe, ohne dass etwas gekauft werden muss. Die Mehrwert-Workflows, also Erstellen aus einem Manifest, Signieren, Testen, Bewertung, Zertifikatsverwaltung und die Entwickler-Registrierungsbefehle, brauchen eine aktive EtherApps Forge Lizenz.
Muss auf dem Build-Agenten das Windows-SDK installiert sein?
Nein. Die CLI ruft die Windows-Paketierungs-API direkt auf, und diese Engine ist eine Betriebssystemkomponente statt einer SDK-Abhängigkeit. Pakete erhalten damit dieselbe Schema-Prüfung, Block-Map und Struktur, die makeappx erzeugt. Der Agent braucht Windows 10 Version 1709 oder neuer oder Windows 11, auf x64. Die Bereitstellung ist ein Ordner, den Sie kopieren und in den PATH legen, ohne Installer.
Wie sollten wir Code-Signierung in CI handhaben?
Signieren Sie über einen Zertifikatsspeicher per Thumbprint oder Subjekt statt über eine PFX-Datei auf der Platte, damit kein Passwort in eine Build-Definition geschrieben wird. Fügen Sie einen RFC-3161-Zeitstempelserver hinzu, damit Signaturen nach Ablauf des Zertifikats gültig bleiben. Setzen Sie den Publisher in Ihrem Manifest exakt auf das Zertifikatssubjekt und lassen Sie den Publisher-Modus strikt, damit eine Abweichung den Build stoppt, statt still die Identität zu ändern, die Ihre Kunden bereits installiert haben.
Wie lassen wir den Build scheitern, wenn das Paket falsch ist?
Führen Sie den Validierungsbefehl mit JSON-Ausgabe aus und verzweigen Sie über den Exit-Code. Er unterscheidet ein analysiert-aber-ungültiges Paket von einem operativen Fehler, und das ist der Unterschied zwischen einem kaputten Paket und einem kaputten Agenten. Halten Sie die Schalter, die einen Build an Validierungs- oder Semantikfehlern vorbeilaufen lassen, aus Release-Pipelines heraus; sie sind Diagnosewerkzeuge, um herauszufinden, warum ein Paket nicht baut, keine Einstellungen, die man aktiviert lässt.
Können wir unseren eigenen Build auch paketieren, wenn er Container-Fix-ups braucht?
Ja. Vor MSIX geschriebene Anwendungen setzen oft Verhalten voraus, das der Container nicht erlaubt, etwa das Schreiben neben die eigene EXE oder einen fest erwarteten Installationspfad. Forge stellt das Package Support Framework bereit, sodass diese Fälle mit Datei- und Registry-Umleitung sowie Korrekturen des Arbeitsverzeichnisses behoben werden, ohne Änderung an Ihrem Quellcode. Bei eigener Software beheben Sie das Verhalten vielleicht lieber an der Quelle, aber das Framework sorgt dafür, dass ein Release währenddessen nicht blockiert ist.
Was ist mit Updates für Kunden, die per Sideload statt über einen Store installieren?
Erzeugen Sie ein App-Installer-Manifest aus dem signierten Paket. Es leitet die Identität aus dem Paket selbst ab und ist Bundle-fähig. Veröffentlichen Sie das Paket und dieses Manifest an einem HTTPS-Speicherort, dann können installierte Kopien sich von dort selbst aktualisieren. Das gibt Sideload- und Unternehmenskunden einen Update-Pfad ohne Store-Eintrag und ohne manuelle Neuinstallation.
Können wir ein bereits ausgeliefertes Paket korrigieren, ohne es neu zu bauen?
Ja. Ein Paket lässt sich in ein Arbeitsverzeichnis entpacken, chirurgisch bearbeiten, validieren und neu packen: Manifestwerte, Capabilities, Payload-Dateien und die virtuelle Registry des Pakets sind alle änderbar, und jede Manifestbearbeitung wird vor dem Schreiben validiert, sodass eine fehlerhafte Änderung abgelehnt statt gespeichert wird. Neu zu packen ändert den Content-Hash, das Paket muss danach also erneut signiert werden.