32-bit Pakete in MSIX zu konvertieren, ist kein Spaziergang. Ausser man hat die richtigen Wanderschuhe.
Willkommen zurück zum MSIX Lab, wo wir uns mit Microsofts neuem Installationsformat MSIX auseinandersetzen, experimentieren und neues entdecken, was mit MSIX so geht (oder was eben nicht).
Das Problem mit Win32 und MSIX
Heute bauen wir auf einem Thema auf, welches wir bereits im April 2019 einmal behandelt haben: Dem Package Support Framework (PSF), einen Tool von Microsoft, mit dem 32-bit-Applikationen in MSIX umgewandelt werden können (hier gehts zum PSF-Blogeintrag).
Das war nicht ganz einfach, desshalb will ich heute ein spezielles Tool vorstellen, welches eine bessere Lösung für das Problem bietet.
Welches Problem? In Teil 2 des obigen Blogs sind wir auf folgenden Fehler gestossen:
Exception Info: System.IO.FileNotFoundException
Gelöst haben wir das damals eben manuell mit dem PSF, was sich aber als ziemlich mühsam entpuppt hatte. Letztlich keine tolle Lösung.
…es gibt aber eine tolle Lösung!
Nun hat der Packaging-Guru Tim Mangan ein elegantes Tool entwickelt, welches ich heute vorstellen und ausprobieren werde: «TMurgent-PsfTooling», herunterzuladen direkt im Microsoft Store (Fun Fact: PsfTooling ist, so Mangan, das erste MSIX-Paket im MS-Store).
PsfTooling Step-by-Step
Als Testpaket benutze ich eine einfache kleine Testapplikation, ähnlich wie im ersten PSF-Blogeintrag. Und zwischenzeitlich hat natürlich auch das MSIX Packaging Tool eine neue Version – ich arbeite in diesem Fall mit Version 1.2019.12180.
Das Tool arbeitet Hand in Hand mit dem MSIX Packaging Tool zusammen: Es klinkt sich während dem Erstellen des MSIX Pakets in den Prozess ein.
Wir erstellen also ganz normal ein MSIX-Paket aus unserem ClearBytePSFSample.msi und versehen es mit einem Zertifikat, wie wir das hier schon mal gemacht haben.
Hier geben wir noch den Installationspfad an und klicken «Next», um die Installation zu starten.
Nun wechseln wir zu PsfTooling und lassen das MSIX Packaging Tool offen, gleich geht’s hier weiter…
Das Tool: TMurgent-PsfTooling
Wir haben uns im Microsoft Store zuvor schon TMurgent-PsfTooling heruntergeladen und installiert. Eine Einführung gibt es gleich bei Tim Mangan selbst (für Version 3.2), in der alle Features der Applikation erklärt werden.
Ich werde mich heute darauf fokussieren, den Fix für unser Problem ins MSIX-Package zu bringen.
Mit geöffnetem TMurgent-PsfTooling wählen wir oben den Installationsfolder aus, den wir schon im MSIX Package Generator angegeben haben.
Dann unter dem Menupunkt Wizards «Fix Shortcuts» auswählen.
Checkboxen wie markiert anwählen und «Modify» klicken. Damit wird nun das neue Start-Exe in Zielordner erstellt (PSLauncher1.exe, rechts unter dem grünen Modify-Balken sichtbar), das für den Fix notwendig ist.
Mit dem Klick auf «Apply Proposed Change List» unten erscheint folgendes Fenster:
Mit «Execute these changes» bestätigen.
Nun sollte alles grün werden wie auf folgendem Bild:
Den Fehler in der Mitte könnt ihr getrost ignorieren – das ist nur ein fehlendes Icon, nicht so wichtig.
Falls gewünscht, kann man jetzt über den Menüpunkt «Edit Json» das erstellte config.json einsehen, im Anschluss kann PsfTooling einfach geschlossen werden. Weiter geht’s wieder im MSIX Packaging Tool.
Zurück im MSIX Pachaging Tool
Öffnet nun das Fenster des MSIX Packaging Tools wieder, der Screen sollte jetzt immer noch so aussehen:
Klick «Next», bei «First launch tasks» nochmal «Next» und im auftauchenden Pop-up (Are you done?) «Yes, move on».
Innerhalb des nächsten Arbeitsschrittes, «Services Report» könnten wir noch Services zum Paket hinzufügen. Dies lassen wir dieses Mal aber sein, also einfach «Next» klicken bis zum Schritt «Create package». Den für euch korrekten Pfad angeben und mit «Create» das Paket bauen.
Damit wäre das Paket schon mal erstellt. Kopiert euer Package jetzt weg und setzt eure VM zurück.
Wenn ihr nun versucht, das Paket zu starten, wird dieses nicht gehorchen, also beginnen wir die Fehlersuche.
Glücklicherweise erlaubt das MSIX Packaging Tool auch das Editieren über das Rechtsklick-Kontextmenü:
Das MSIX Packaging Tool öffnet sich sogleich. Bevor wir das Paket editieren können, muss es jedoch entpackt werden. Das geht einfach über den «Unpack» Button unten.
Nach erneuter Bestätigung öffnet sich der Zielordner. Das sieht so aus:
Weiter oben, beim initialen Erstellen des Pakets, haben wir unter Package Information den Installationspfad angegeben. Damit liegen die Files im Root-Verzeichnis. In der json-Datei ist bisher aber noch der «VFS»-Folder angegeben:
„executable“: „VFS\\ProgramFilesX86\\ClearBytePSFSample\\ClearBytePSFSample.exe“
Ich habe bisher noch keine andere Lösung für das Problem gefunden – wir müssen das json-File bearbeiten. Es geht einzig um die gelb markierten Bereiche:
Wir ändern die Zeilen «executable» und «workingDirectory» auf folgendes:
„executable“: “ ClearBytePSFSample.exe“,
„workingDirectory“: „“,
Im Arbeitsschritt «Package files» im MSIX Packaging Tool ersetzen wir nun das alte json-File mit der neuen, angepassten Datei. Zuerst per Rechtsklick die alte Datei löschen, dann mit Rechstklich auf den Package-Folder per «Add file…» das neue json hinzufügen.
Hier könnte man das Paket übrigens auch noch bereinige und unnötige Files entfernen. Mein Package sieht jetzt so aus:
Wir schliessen alles mit einem Klick auf «Save» und installieren das Paket per Doppelklick…
Das Programm startet, die Konfig-Datei (app.json) kann angepasst werden. Success!
Schön, dass Ihr dabei wart und so lange durchgehalten habt…aber es hat sich doch gelohnt, oder?
Happy Packaging!
-Peter