TMEditX and MsixDeploy v3.0 Released

TMEditX is the licensed and more capable tool for fixing up MSIX packages since it doesn’t have to depend on the Microsoft MSIX Packaging Tool to create the final package.  [Download_page]

Version 3 of TMEditX is now available from the [Download_page]. A major release, Version 3 brings in changes both to improve the compatibility of packages under MSIX and to make it easier to do so. This release finally brings you all of the work done over the last four months. The TMEditX product consists of three programs, and release notes for each for those programs appears below.

TMEditX

The primary new items in the release for TMEditX include:

  • Includes changes from the v2022.12.05 and v2022.12.11 releases of our fork of the Package Support Framework. See articles https://www.tmurgent.com/TmBlog/?p=3497 and https://www.tmurgent.com/TmBlog/?p=3509 for details on those PSF releases.
  • New option for fixing file-based issues, the MfrFixup can replace the need for FileRedirectionFixup.  This fixup provides a wider range of redirection capabilities to improve compatibility.
  • New option for adding the InstalledLocatonVirtualization extension to the package.   See article https://www.tmurgent.com/TmBlog/?p=3491 about this MSIX Feature.
  • The output of package analysis is now broken into recommended and available sections, with new fix types added.  The recommended section is for fixes that we recommend making based on the analysis. The available section is for making it easier to add changes that are possibly needed, but rarely used.  In some cases, there are now new options that are alternatives methods to fix issues that are in the recommended list. 
  • One such optional fix is an alternative to using the DynamicLibraryFixup to take care of “dll not found” issues. The DynamicLibraryFixup is always our first choice, there are applications it doesn’t help, so we offer a button to find and copy all dlls to the root folder of the package.  This new option isn’t offered when there are 32 and 64 bit dll files with the same name in the package.
  • A new type of offered fix is one to add the allow elevation capability to the Manifest. This is needed when you have a primary app that launches a child app with elevation.  If we detect child apps with manifests for elevation this will appear in the recommended fixes section, but otherwise it will be in the available list for situations where elevation occurs through direct programming.
  • When the primary application started by PsfLauncher has a manifest for elevation, add an external manifest to PsfLauncher to have it elevate first.  This avoids the need to add the elevation capability setting to the package.
  • The fixes we have that improve file type association integration has been adjusted to prevent duplications from causing issues in the AppXManifest.
  • Opening of very large packages is now faster.
  • Command line options for TMEditX have been broadly expanded to aid in fine-grained control with automated repair.
  • Handle apps with shortcuts that set the current directory using the unusual {workingdirectory} syntax. Also added support for some missing VFS folder mappings when processing the lnk files.
  • Adjust fixes for certain shell extensions to avoid duplicate GUIDs from being added to the AppXManifest.
  • Add debugging symbols for the PSF to packages when the debug version is used.  This makes the stack display of Process Monitor easier to read.
  • Detection of apps with “Registration free COM” added to the analysis.  This leads to a new fix added to the optional fix feature. This will fix some packages but break others (especially those with Universal Marshallers). Additional research is needed before turning this into a recommended fix.
  • Added back in dependency dlls needed when the release version of RegLegacyFixup is used.  The location of these dlls is also altered to ensure that the app may load it’s own version of these dlls if present in the package instead.

When you open your existing package, the analysis page is displayed. We recommend working this page from the top down.

  • First click the button for package cleanup.  TMEditX has an improved file and registry cleanup list over that of the Microsoft MSIX Packaging tool.   As we recommend running the tool on your test VM instead of the packaging VM, you can also more easily add to your cleanup filter list by right-clicking on file/registry items that you’d like automatically removed in the future.  Because you don’t revert snapshot on this machine very often, it is easier to maintain your modified list.  An export/import feature is available on the File–>Options tab when you need to save off the list or share with others.
  • If the PSF is recommended, there will be details on what triggered the need along with a button to add the PSF. When you click on that button it will pre-fill in all of the recommended fixes and configurations. Normally you can just use these settings and hit apply. Currently, I recommend the following changes (which will likely become the defaults in the future)
    • If the FileRedirectionFixup is selected to be injected, select the MfrFixup instead. The default settings on MfrFixup should be used (which will automatically turn on InstalledLocationVirtualization as well).
    • Add the DynamicLibraryFixup as well.
  • After applying the PSF, a re-analysis of the package is performed and you should click on any fixes remaining in the Recommended section.
  • Items remaining in the Available section should generally not be used except for troubleshooting a package for which recommended fixes did not help.

TmMsixMgr

Included in the release is an update to the MsixMgr utility.  This program is typically used on the test VM to manage the process of adding/removing/debugging packages.  Specific changes in this release include:

  • Added support for detection of the new MfrFixup.
  • Added support for detection of the InstalledLocationVirtualization extension in the package.
  • Added option to skip validation of package signatures. While helpful when you first start working with package signing, once you have a handle on that you can improve performance of this tool by disabling the verifications.
  • Added right-click to get a cmd prompt inside of any installed package.

ParsePsfDebugLog

Another program that is part of the release, this program helps you to parse through the verbosity of the debug logs produced when you use the debug build of the PSF.

The program is essential for us to improve the PSF itself, but these logs can also help you to understand issues with packages.  To use, you must select the debug option when adding in the PSF (this option appears on the upper right corner of the window to add the PSF in TMEditX).  Then you would run the SystemInternals DebugView program while testing the package in order to capture the debug output. DebugView has an option to save this output to a text file.  Open the saved file in ParsePsfDebugLog.

This release improves how this information is organized for display, and much work was done in the debug build code of the PSF specifically for use by this tool.

The ParsePsfDebugLog tool organizes this output first by process id, and then by “event”.  An event in this case refers to an API call by an application, which often involves many lines added to the output code, and even multiple lower-level calls as multiple folders might be consulted, or files copied as part of processing the call.  This organized “event” shows you the call by the app and overall result by default, but there is a details button that will display all of the summarized details.

By Tim Mangan

Tim is a Microsoft MVP, and a Citrix CTP Fellow. He is an expert in App-V and MSIX.