TMEditX  The Ultimate MSIX Package Editor plus TmMsixDeploy To Documentation Index

TMEditX Analysis and Fixes

 

 
The TMEditX Analysis menu tab at the top of the display provides access to package analysis results and fixes.  The tool will investigate the intent of the original installer used during recapture along-side the existing packaged manifest.  The tool can determine many types of issues that may be solved by injecting the PSF into the package, as well as issues solvable by modifying the AppXManifest file.

The analysis tab shows the results of this analysis and offers a number of buttons that can be used to address the issues found.

Start with Pre-PSF package cleanup

The tool comes with an impressive exclusion list to help you clean up common unnecessary file and registry items that may slip through the MMPT exclusions.  And of course, you can improve this list yourself.  The advantage of doing this here is that you usually install TMEditX on a machine that you don't constantly revert so you don't lose your improved list.

At the top of the analysis page will be a button to perform the package cleanup and then perform a re-analysis of the remaining package.  You want to run this first, as some of those items may trigger additional fixups, or additional configuration in the fixups, that become unnecessary when the cleanup is performed later.  By the way, you can view all of the file/registry entries to be removed by expanding the specific buttons at the bottom of the analysis page.

If you captured a portable app, or a Squirrel updater was detected, these are also addressed in this cleanup before considering the PSF.  

After the Pre-PSF changes are made, the analysis is refreshed to adjust for those changes.

Next add the PSF, if needed

If the Psf is to be injected into the package, this should be performed prior to other available actions.

If analysis shows that the PSF is recommended, a list of fixups and reasons for them are shown. The analysis is not able to find all application conditions that lead to needing fixups. The analysis is based upon evidence of file and registry items written by the captured vendor installer, but cannot detect runtime issues such as those leading to need the DynamicLibraryFixup.

You may add the PSF whether or not analysis suggests it. The button will bring up a new window for you to configure Psf components. If suggestions were made, these will already be added to the settings in that window.
This tool contains both 32 and 64 bit versions of following components:
•    PsfLauncher
•    PsfRuntime
•    TraceFixup
•    PsfMonitor
•    FileRedirectionFixup
•    MfrFixup
•    DynamicLibraryFixup
•    RegLegacyFixup
•    EnvVarFixup
•    WaitForDebuggerFixup
•    StartingScriptWrappers

Then, perform the remaining actions

The remaining actions are broken into two lists, the Recommended and the Available lists. Most items will only appear in one of these lists, however there are may move between lists, depending on what is in the package currently. The remaining actions will be shown when detected.

Items may appear greyed out because while there is detection, a fix is not currently possible.  This may be because the fix has already been applied, a competing fix has already been applied, or full support of the feature is not yet available through MSIX.


Shortcut from Startup Folder missing

The packaging tool currently misses shortcuts that were added to the Startup folder of the start menu.  These shortcuts are intended to run automatically when the user logs in. 

This fix will add them into the manifest. 


FTAs Needing Shell Manifest Support

The packaging tool currently misses certain Shell Verb Commands. This can occur because of how the installer performed the registration, but also the type of file association might be the cause, or having multiple shell verbs against the same file type.

This fix will add them into the manifest. 

Shell Extension Context Menus needing Manifest support.

The packaging tool misses certain Shell Extensions Context Menus that are supportable according to the manifest schemas. This fix will add them into the manifest, however further OS support might be required.


Shell Extension Property Sheet Handler needing Manifest support.

The packaging tool misses certain Shell Extensions that are supportable. This fix will add them into the manifest.


Shell Extension Thumbnail Handler needing Manifest support.

The packaging tool misses certain Shell Extensions that are supportable. This fix will add them into the manifest.


Shell Extension Preview Handler needing Manifest support.

The packaging tool misses certain Shell Extensions that are supportable. This fix will add them into the manifest.


Shell Extension Property Metadata Handler needing Manifest support.

The packaging tool misses certain Shell Extensions that are supportable. This fix will add them into the manifest.


Shell Extension Protocol Handlers needing Manifest support.

The packaging tool misses certain Shell Extensions that are supportable. This fix will add them into the manifest if possible. Currently exe based protocol handlers work, but COM based protocol handlers have issues.


Fonts needing Manifest support.

The packaging tool misses package Fonts that are supportable. This fix will add them into the manifest.


AppPath Registrations needing Manifest support as LoaderSearchOrder.

The packaging tool misses packages with App Paths that are supportable. There are two different issues that this might cause, one for dll search and one for exe search.


This fix will address the DLL search issue by adding them into into the manifest by adding a package level LoaderSearchOrder. Generally, adding the DynamicLibraryFixup to the package will also solve dll loading issues and you may use either (or both).


AppPath Registrations may need Manifest support as ExecutionAlias.

The packaging tool misses packages with App Paths that are supportable. There are two different issues that this might cause, one for dll search and one for exe search.


This fix will address the EXE search issue by adding them into into the manifest by adding an application level ExecutionPathAlias. The fix ensures that the app is findable when trying to run the command by just using the filename of the exe and not the path.


ETW Manifest Files may need Manifest support.

The packaging tool misses packages with Event Trace for Windows Manifest files that will be someday supported.

  • At this time the support exists in the new schemas, but has yet to be added to the operating system (AppInstaller). 
  • Adding the support will not harm the package, and should work once OS support is added.  Of course, with any unsupported future feature there is a chance that things may change before this support arrives.
  • Without this support, the packaged application should be able to log events, but the formatter will be missing making it much more difficult to understand the logged data. 


Firewall Configuration rules may need Manifest support.

The packaging tool currently filters out the registry items associated with Windows Firewall Rule configuration (although they are not part of the registry filter list). When this bug is fixed it is anticipated that it still might not migrate those settings into the AppXManifest.  If they show up in the registry and are not found in the Manifest, this will be detected and remediated.

 


Registration-Free COM needing Manifest Support.

There is a form of COM that identifies com dependencies in a exe.config file, allowing the app to find the com dependency even if it is not registered.  If that dll is part of the package it might not be found under MSIX  This fixup appears when such a config file is recognized.  The fixup will attempt to add those COM dependencies that are part of the package into the AppXManifest COM registration.  This item should be considered experimental, so test thoroughly.


Has Internal AppInstaller File.

Packages received from vendors may include an AppInstaller file as the modern way to control updates.  If you don't want the application updates when the vendor posts an update, you can use this fixup to remove it from the vendor package.


Has Service with FilePath based Argument.

When the command line to start an exe based windows service has command line arguments that include file paths, the Microsoft MSIX Packaging Tool does not parse the arguments for new file path locations.  This fixup will make the appropriate adjustments (note: the fix is dependent on knowing the PackageName so don't rename the package later on).


Package had missing file.

Somehow the Microsoft Packaging Tool can manage to create a package with files mentioned in the manifest that are not in the package. While such a package can be created, it will fail when you try to install it.  This seems to happen with some COM registrations.  The fixup will remove the reference from the AppXManifest so that you can install and test the package.


Package had Bad Desktop7 Shortcut.

Sometimes the Microsoft MSIX Packaging Tool creates packages with duplicate shortcuts, one with a white icon and one that works (not always the one with the good icon).  This happens when the lnk file referenced in the Desktop7:Shortcut element of the AppXManifest is a missing file or has bad information (such as pointing to an icon file that isn't in the package).  This fixup will remove the bad entries, leaving the original working shortcut in place.  Because this issue is solvable by using PsfLauncher, these bad extensions will be removed from the package.


Package has Midding App-V Empty Folders.

Packages converted from App-V may have had empty folders defined in the App-V package and the Microsoft MSIX Packaging Tool conversion ignores them.  This fixup adds them by creating a zero-byte dummy file (similar to what the MMPT does when monitoring a capture).

 


Manifest Schema Cleanup.

Some versions of the MMPT adds schema references to inappropriate schemas like Iot and Mobile. While these cause no real harm when not used, it does generate an error hidden in the event logs. Furthermore, removing the reference will ensure the accuracy of schema validation operations.


Is Candidate for InstalledLocationVirtualization.

Fixup adds ILV to the AppXManifest.

 

Is Candidate for Disable Electron Fixup.

Electron based Apps can have autoupdate capabilities (beyond Squirrel) that may be defeated by adding an environment variable. This fix appears when electron is detected AND the DynamicLibrary fixup is in place.  The fixup adds this virtual environment variable to the package's config.json file. 

 

Copy Dlls to System Folders

Fixup locates all dlls in the package, analyzes them for bitness, and makes a copy of each in the appropriate VFS/Systemx86 or CFS/SystemX64 folder so that they will be found.

 

Copy Dlls to Root Folder

Fixup locates all dlls in the package and makes a copy of each in the root folder of the package so that they will be found.  This fixup isn't available if there are multiple dlls with the same name (use previous fix instead).

 

Is Candidate for AllowElevation

Fixup adds the AllowElevation restricted capability to be added to the AppXManifest.  Only needed when an un-elevated process running in the container needs to start a new process with elevation.

 

Shell Extension DropHandler Needing Manifest support.

Adds DropHandler support to the AppXManifest.

 

Shell Extension InfoHandler Needing Manifest support.

Adds InfoTip Handler support to the AppXManifest.

 

Shell Extension DataHandler Needing Manifest support.

Adds DataHandler support to the AppXManifest.

 

Shell Extension DragAndDropHandler Needing Manifest support.

Adds DragAndDropHandler support to the AppXManifest.

 

Shell Extension IconHandler Needing Manifest support.

Adds IconHandler support to the AppXManifest.

 

Shell Extension CopyhookHandler Needing Manifest support.

Adds CopyhookHandler support to the AppXManifest.

 

Shell Extension ColumnHandler Needing Manifest support.

Adds ColumnHandler support to the AppXManifest.

 

Shell Extension PropertySheetHandler Needing Manifest support.

Adds PropertySheetHandler support to the AppXManifest.

 

Shell Extension PinToTaskbar Needing Manifest support.

Adds PinToTaskbar support to the AppXManifest.

 

Shell Extension PinToStartMenu Needing Manifest support.

Adds PinToStartMenu support to the AppXManifest.

 

Shell Extension ImageHandler Needing Manifest support.

Adds ImageHandler support to the AppXManifest.

 

Shell Extension StructuredStorageHandler Needing Manifest support.

Adds StructuredStoageHandler support to the AppXManifest. 


Is Candidate for packageWriteRedirectionCompatibilityShim.

This is an AppXManifest property that is available and seems to be an alternative to the PSF FileRedirectionFixup, MfrFixup, and InstalledLocationVirtualization.  It is not often used, but if nothing else works for a certain package you could give it a try.