Streamlining MSIX Migration: A Deep Dive into Package Support Framework
Migrating legacy applications to new versions of Windows can be a real struggle — you have an app, and you need to pack it into MSIX. Moreover, this problem can be exacerbated especially when your win32 app fails when launched or during work due to MSIX limitations, and you don’t have access to the application’s source code. Luckily, you can use Package Support Framework to migrate such obstacles and apply easy fixes to solve the issues of running the app inside the MSIX container. This piece provides a glimpse of the Package Support Framework and how to apply fixes with the help of PACE Suite for application packaging.
What is the Package Support Framework?
Microsoft created an open-source solution called the Package Support Framework or PSF to help organizations transition their legacy applications to newer versions of Microsoft Windows. The PSF helps apply fixes to applications to run in MSIX containers if no source code is available. In simple terms, the PSF is a so-called application that runs inside an MSIX container and then runs the needed app inside itself.
The Package Support Framework is created with the Detours technology, which monitors and instruments API calls on the MS operating system. The PSF contains the following elements, such as an executable, a DLL run-time manager, and run-time fixes.
Your package content might look like the following picture with all the SPF elements:
Here are some common examples where you can find the Package Support Framework useful:
- Your app can’t find some DLLs when launched. You may need to set your current working directory. You can learn about the required current working directory in the original shortcut before you convert to MSIX.
- The app writes into the install folder. You will typically see it by “Access Denied” errors in Process Monitor.
- Your app needs to pass parameters to the executable on launch. You can learn about the required parameters in the original shortcut before you convert to MSIX.
The PSF is lightweight, open source, and allows you to promptly tackle application issues. It additionally provides you with the chance to engage with a global community and leverage the contributions made by others. However, many things need to be done manually when using the Package Support Framework, and it’s quite time-consuming. That’s why many application packaging tools can help you utilize the PSF more easily and faster, and one such tool is PACE Suite. Let’s see how you can use the solution and MSIX Package Support Framework to apply fixes to your applications.
Comparison of a package content with and without the Package Support Framework
Here are a few examples of the difference between a package content without and using the Package Support Framework and adding redirect fixups.
Despite having new files in the package with PSF, the AppxManifest.xml file is also changed:
How to use Package Support Framework to apply fixes?
Here, you’ll learn how to apply fixes in different cases. The following is the DLL fix, and it’s used when the packaged application cannot be run because it does not find DLLs that are part of the package. Before applying this fix, ensure you have opened the MSIX package in MSIX Editor.
How to apply DLL fixes?
1. Go to the Package Designer > Apps and Fixups tab.
2. Select New fixup > DLL fixup from the context menu of the application that fails.
3. Click Browse and choose the DLL file that can’t be found by the application when launched. Then, click Save.
How to apply File redirection fixes?
You can use this fixup when the packaged App tries to write data to files (log, config, etc.) located under the Package Root folder and crashes. MSIX container prohibits writing under the Package Root folder.
1. Go to the Package Designer > Apps and Fixups tab.
2. Select New fixup > File redirection fixup from the application’s context menu that fails.
3. Click Browse and choose a folder from which the fixup must redirect the read/write operations. Enter the Pattern matching in the RegExp format to define for which files the redirection rule will work. Note that you can add multiple File redirection fixups for one application. Then, click Save.
How to set the App working directory and pass arguments to EXE?
This fix may be useful when the app requires working directory to be set or you need to pass arguments to the main executable file of the app.
1. Go to the Package Designer > Apps and Fixups tab.
2. Select New fixup > WkDir and Arguments settings from the application’s context menu.
3. Click Browse to choose the App working directory and, if needed, enter Arguments for the application executable. You can learn about the required current working directory and arguments in the original application shortcut before converting it to MSIX. Then, click Save.