{"id":4001,"date":"2025-02-23T10:29:43","date_gmt":"2025-02-23T15:29:43","guid":{"rendered":"https:\/\/www.tmurgent.com\/TmBlog\/?p=4001"},"modified":"2025-02-23T10:29:43","modified_gmt":"2025-02-23T15:29:43","slug":"psf-v2025-02-22-whats-new","status":"publish","type":"post","link":"https:\/\/www.tmurgent.com\/TmBlog\/?p=4001","title":{"rendered":"PSF V2025.02.22 What&#8217;s New?"},"content":{"rendered":"\n<p align=center><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"300\" class=\"wp-image-3368\" style=\"width: 300px;  padding: 5px\" src=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2022\/01\/PsfLogo.png\" alt=\"Psf Logo\" srcset=\"https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2022\/01\/PsfLogo.png 500w, https:\/\/www.tmurgent.com\/TmBlog\/wp-content\/uploads\/2022\/01\/PsfLogo-300x180.png 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/p>\n<p><em>The Package Support Framework (PSF) was originally a Microsoft open-source project to help Win32\/DotNet applications run when inside an MSIX Container.\u00a0 TMurgent has taken up the support for the PSF in our own fork <a href=\"https:\/\/github.com\/TimMangan\/MSIX-PackageSupportFramework\" target=\"_blank\" rel=\"noopener\">here on GitHub<\/a>.<\/em><\/p>\n\n\n\n<p>Version 2025.02.22 of the Package Support Framework has been released.\u00a0 So, what is new in it?<\/p>\n<p>\u00a0<\/p>\n\n\n\n<h4>Features<\/h4>\n<ul>\n<li>Added support for &#8220;SynnstemApps&#8221;, an undocumented VFS variable that we uncovered.\u00a0 This support affects the MfrFixup, and the FileRedirectionFixup.\u00a0<\/li>\n<li>Added and fixed support for &#8220;UserProfiles&#8221; and &#8220;Profile&#8221; variables in MfrFixup.<\/li>\n<li>Add the &#8220;AppData\\Microsoft\\Windows\\Recent&#8221; folder to the list of folders in MfrFixup that redirect to local, by default.<\/li>\n<li>In MfrFixup, added support to intercept ntdll based NtQueryDirectoryFile and NtQueryDirectoryFileEx to support apps that bypass the FindFirst like functions in kernel32.\u00a0 We were seeing this most often in apps ported from Linux.<\/li>\n<li>Added proper directory handling for apps that use the old style Winforms dialog pickers (the ones that look like they came from Windows XP) in MfrFixup.<\/li>\n<\/ul>\n<h4>CHANGES AND FIXES<\/h4>\n<ul>\n<li>MfrFixup fix for the mapping of virtual directories in an &#8220;edge case&#8221; involving the root folder of the C: drive.<\/li>\n<li>MfrFixup changes to improve the results when an app &#8220;walks through&#8221; the user profile directory to get to any of the folders under AppData.<\/li>\n<li>PsfRuntime change to add an expected-to-fail read of a dummy non-existent registry key HKCU\\Software\\PSF_READY_MARKER that will show up in Process Monitor traces to indicate that the PSF is fully injected and configured and the application process is about to start running.\u00a0 This helps you know where to start looking in the trace.<\/li>\n<li>RegLegacyFixup: added debug output to the debug console port (use DebugView) whenever an application gets an AccessDenied return from a registry request.\u00a0 This will make it easier to see that the app is trying to write to HKLM and is probably not a good candidate for MSIX right now.<\/li>\n<li>Added versioning information to the 64-bit PSF components that were missing the version setting in the last release.<\/li>\n<li>Solved issue when using the Debug build of the PSF that generated the &#8220;2_Ctr_new_delete:&#8221; issue that crashed certain apps when you were debugging them.<\/li>\n<li>Fix in FindClose that could cause an application that bypassed the FindFile but closed the handle, and caused a crash in the FileRedirectionFixup and MfrFixup.<\/li>\n<li>Reduction in lower-level file calls made in the MFRFixup to the same path.\u00a0 The MFRFixup often needs to check the native local, package, and redirected paths, but for certain paths we would end up checking the same path more than once.\u00a0 Logic was put in place to reduce this.<\/li>\n<\/ul>\n<h4>DEPRECATION NOTICE<\/h4>\n\n\n\n<ul>\n<li>Added a deprecation notice in the documentation for FileRedirectionFixup.\u00a0 We have been recommending the MfrFixup as a superior replacement for this fixup for some time.\u00a0 While the FileRedirectionFixup will remain in the build for some time, we are no longer actively updating it, except in cases where code is shared between them.<\/li>\n<\/ul>\n\n\n\n<p>This version of the PSF is scheduled to be added to the following software, when released:<\/p>\n<ul>\n<li>PSFTooling version:\u00a0 6.12 or above<\/li>\n<li>TMEditX version:\u00a0 5.6 or above<\/li>\n<\/ul>\n<p>No dates for those releases are available at this time.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Version 2025.02.22 of the Package Support Framework has been released.\u00a0 So, what is new in it? \u00a0 Features Added support for &#8220;SynnstemApps&#8221;, an undocumented VFS variable that we uncovered.\u00a0 This support affects the MfrFixup, and the FileRedirectionFixup.\u00a0 Added and fixed support for &#8220;UserProfiles&#8221; and &#8220;Profile&#8221; variables in MfrFixup. Add the &#8220;AppData\\Microsoft\\Windows\\Recent&#8221; folder to the list&hellip; <a class=\"more-link\" href=\"https:\/\/www.tmurgent.com\/TmBlog\/?p=4001\">Continue reading <span class=\"screen-reader-text\">PSF V2025.02.22 What&#8217;s New?<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[53,57,56],"tags":[52,54],"class_list":["post-4001","post","type-post","status-publish","format-standard","hentry","category-msix","category-packaging","category-psf","tag-msix","tag-psf","entry"],"_links":{"self":[{"href":"https:\/\/www.tmurgent.com\/TmBlog\/index.php?rest_route=\/wp\/v2\/posts\/4001","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tmurgent.com\/TmBlog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tmurgent.com\/TmBlog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tmurgent.com\/TmBlog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tmurgent.com\/TmBlog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4001"}],"version-history":[{"count":5,"href":"https:\/\/www.tmurgent.com\/TmBlog\/index.php?rest_route=\/wp\/v2\/posts\/4001\/revisions"}],"predecessor-version":[{"id":4011,"href":"https:\/\/www.tmurgent.com\/TmBlog\/index.php?rest_route=\/wp\/v2\/posts\/4001\/revisions\/4011"}],"wp:attachment":[{"href":"https:\/\/www.tmurgent.com\/TmBlog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4001"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tmurgent.com\/TmBlog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4001"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tmurgent.com\/TmBlog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4001"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}