TMEditX  The Ultimate MSIX Package Editor plus TmMsixDeploy To Documentation Index

TMEditX Command Line Options and Automation

 

 
TMEditX now supports a command line interface to automatically analyze and update your package.  This may be the simplest way to create packages yet!  Just run the command line against each package and the software will determine the right thing to do without further input in most cases. 

It opens and analyzes the package and automatically applies all of the detected fixes.  If the PSF is indicated, it always adds the FileRedirection, DynamicDll, and RegLegacy fixups using the most generous configurations to improve the odds of compatibility.  If need for the EnvVar Fixup was detected, that will be added too.  All other of the fixes you normally see in the analyzer will also be applied.

Depending on the command line options you provide, it can also save your package into either MSIX or CIM form, or leave the package open for your review before you save it yourself.

 The command line options are supported:

/ApplyAllFixes After the package is opened it will automatically apply all pre-PSF fixes, PSF, and recommended fixups after analysis that might improve the odds of compatibility for older apps, possibly as modified by other options.  Skip and Use options will still override the use of the specific fixups.
/ApplyCleanupFixes After the package is opened it will automatically apply all pre-PSF fixes, including the CleanupFixes.  PSF and Recommended fixes are not applied, unless other command line options request it.
/RunUiMinimized Start the UI minimized to the taskbar.
/SkipConsoleApps Configures PsfLauncher to not inject PsfRuntime into console apps that it launches.  Some, but not most, console apps will break upon dll injection.
/SkipDyn Do not add the PSF DynamicLibraryFixup (even if analysis indicates)
/SkipEnVar Do not add the PSF EnvironmentVariableFixup.
/SkipFRF Do not add the PSF FileRedirectionFixup.
/SkipRegLeg Do not add the PSF RegistryLegacyFixup.
/UseLauncher Add PsfLauncher, even if not indicated by analysis.
/UseDebugPsf By default, the release build of the PSF is used, but this option tells the tool to apply the debug build when applying the PSF.
/UseWaitForDebugger If the PSF is added, the Debug version of the PSF will be used and the WaitForDebuggerFixup will be added.  This will pause the target application before it can run, waiting for a debugger (like Visual Studio) to attach to the process.  This is something developers might do with their code to debug.
/UseTraceMonitor Add the PSF, TranceFixup, and PSFMonitor.  This option is not applicable if ApplyAllFixes is used.
/UseFRF Add the PSF,FileRedirectionFixup, even if analysis does not indicate that it is needed.
/UseDynDll Add the PSF DynamicLibraryFixup, and configure all applicable dlls in the package to the Json config.
/UseRegLeg Add the PSF RegistryLegacyFixup, and configure the most commonly used rules to the Json config. Note: This fixup is automatically added any time the PSFLauncher is added through automation, so this setting has no effect currently.
/AutoSkipPsf Acts as an opt out for the PSF; used in conjunction with /ApplyAllFixes to skip the PSF injection, even if detections indicate that it should be used.  This option will override any /Use option associated with the PSF.
/AutoReplaceFrfWithMfr If Analysis indicates need for a file based fixup, or if /UseFrf was specified, then use MfrFixup instead of FileRedirectionFixup.  This setting is now deprecated as MfrFixup is now the default file based fixup selected by ApplyAllFixes.
/AutoAddILV This probably should have been called /UseILV, it says to add InstalledLocationVirtualization to the AppXManifest, regardless of it the PSF is used.  When specified, it also ensures the if the MfrFixup is added it is added in IlvAware mode.
/AutoSkipILV If the MFR fixup is added for any reason, set it to not use IlvAware mode and do not add InstalledLocationVirtualization to the AppXManifest.
/AutoCopyDlls_PkgRoot Some apps use an API that skips where DynamicLibrary intercepts dll loading.  This available fixup finds all dlls in the package and copies them to the root folder of the package.  Should be used with /SkipDynLib.  Cannot be used if there is more than one dll with the same filename (see next item below).
/AutoCopyDlls_System32 Some apps use an API that skips where DynamicLibrary intercepts dll loading.  This available fixup finds and analyzes all dlls in the package and copies them to the VFS/SystemX64 or VFS/SystemX86 folder as appropriate so they will be found.  Should be used with /SkipDynLib, especially for apps that have both 32 and 64 bit dlls.
/AutoAllowDesktopShortcuts Overrides any tool configuration regarding the removal of "desktop shortcuts". This tells the tool to allow the package to keep "desktop shortcuts".  These are normally removed.
/AutoRemoveDesktopShortcuts Overrides any tool configuration regarding the removal of "desktop shortcuts".  This setting causes the tool to remove them from the package.
/AddCapabilityAllowElevation Adds AllowElevation to the capabilities list in the AppXManifest. If a primary application (i.e. shortcut, file association, or protocol launch) that does not elevate starts a child process that requires elevation, the AllowElevation Capability is required. Apps that require elevation for the primary entry point don't need this setting to be added to the AppXManifest (but it does no harm to add it).
/AutoSaveAsMSIX After applying fixes, the package will automatically be saved as a MSIX package using the tool configuration.  In most cases, you would have configured TMEditX to increment the build number and save in the same folder with the filename using the updated build number.  If configured, the Publisher field will be updated to match the configured certificate and the package is also signed.
/AutoSaveAsCIM DEPRECATED: To create a CIM package, you must now use the conversion option of the TMEditX GUI.
/AutoSaveAsFolder The following argument is a path to a folder to save the package into, instead of the folder that the package came from.  The folder must already exist.
/AutoSkipPackageSigning Specified to skip the package signing step, even if configured in the tool.
filename If automation is to be used, the filename of the MSIX package to be opened must be added to the end of the command line.
/ApplyAllFixes After the package is opened it will automatically apply all relevant fixes, plus those that might improve the odds of compatibility for older apps.
/UseDebugPsf By default, the release build of the PSF is used, but this option tells the tool to apply the debug build when applying the PSF.
/UseTraceMonitor Add the PSF, TranceFixup, and PSFMonitor.  This option is not applicable if ApplyAllFixes is used.
/UseWaitForDebugger If the PSF is added, the Debug version of the PSF will be used and the WaitForDebuggerFixup will be added.  This will pause the target application before it can run, waiting for a debugger (like Visual Studio) to attach to the process.  This is something developers might do with their code to debug.
/AutoSaveAsMSIX After applying fixes, the package will automatically be saved as a MSIX package using the tool configuration.  In most cases, you would have configured TMEditX to increment the build number and save in the same folder with the filename using the updated build number.  If configured, the Publisher field will be updated to match the configured certificate and the package is also signed.
/AutoSaveAsCIM After applying fixes, the package will be automatically saved as a CIM package. The tool will create a new subfolder under the folder containing the input package and save the CIM there.  Tool configuration options for versioning are applied.
/ReplaceVCRuntimesWithDependency VC++ Runtime dlls that can be replaced by a package reference to a Framework package (VC 110, 120, and 140) will be removed from the package and a reference to the framework package added to the AppXManifest file as a dependency.  This dependency would be automatically added, if missing, when the package is installed.  As these packages are maintained by Microsoft, they will automatically be updated when new CVEs are discovered.  This eliminates the need to find and patch your packages.
filename If automation is to be used, the filename of the MSIX package to be opened is added to the command line.

 

 

Examples of common usage:

TMEditX Just open the application without a package and take no actions.
TMEditX filename Open the named MSIX package and analyze it. Not fixes are automatically applied.
TMEditX  /UseTraceMonitor /AutoSaveAsMSIX filename Open the named MSIX package, analyze it, but only add the Launcher, TraceFixup, and PsfMonitor. Save and sign the package appropriately.
TMEditX /ApplyAllFixes /AutoSaveAsMSIX filename Open the named MSIX package, analyze if, apply all fixes for compatibility, save and sign the package appropriately.