App Paths support missing

%3CLINGO-SUB%20id%3D%22lingo-sub-227922%22%20slang%3D%22en-US%22%3EApp%20Paths%20support%20missing%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-227922%22%20slang%3D%22en-US%22%3E%3CP%3E%3CSTRONG%3EWin32%20applications%20may%20(and%20should)%20register%20%22App%20Paths%22%20in%20order%20to%20load%20dlls%20from%20folders%20they%20create%20that%20are%20outside%20of%20the%20current%20working%20directory.%26nbsp%3B%20MSIX%20application%20runtime%20does%20not%20support%20this.%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3ESometimes%20an%20application%20may%20place%20dlls%20that%20are%20shared%20between%20multiple%20executables%20in%20the%20package%20in%20a%20common%20dll%20folder.%26nbsp%3B%20Prior%20to%20Windows%20Vista%2C%20this%20required%20modifying%20the%20Path%20variable%2C%20but%20starting%20in%20Vista%20Microsoft%20introduced%20%22App%20Paths%22%2C%20one%20of%20the%20purposes%20of%20which%20was%20to%20allow%20an%20executable%20to%20declare%20additional%20folders%20for%20dll%20searching%20that%20are%20specific%20only%20to%20that%20executable.%26nbsp%3B%20Registered%20under%20the%20key%20%22HKLM%5CSoftware%5CMicrosoft%5CWindows%5CCurrentVersion%5CApp%20Paths%22%2C%20the%20listed%20folders%20would%20augment%20the%20normal%20dll%20search%20algorithm%2C%20to%20first%20check%20the%20current%20working%20directory%2C%20then%20folders%20listed%20under%20%22...%2FApp%20Paths%2Fexename%2FPath%22%20registry%20string%2C%20and%20finally%20looking%20in%20the%20Path%20Variable.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EUnder%20MSIX%2C%20the%20search%20path%20used%20is%20only%20to%20check%20the%20current%20working%20directory%2C%20and%20then%20the%20appropriate%20System%20folder%20(System32%20or%20SysWow64).%26nbsp%3B%20Thus%2C%20these%20dlls%20are%20not%20found.%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI%20have%20very%20simple%20a%20purpose%20built%20MSI%20installer%20that%20will%20demonstrate.%26nbsp%3B%20Email%20me%20for%20a%20copy.%3C%2FP%3E%3C%2FLINGO-BODY%3E
MVP

Win32 applications may (and should) register "App Paths" in order to load dlls from folders they create that are outside of the current working directory.  MSIX application runtime does not support this.

 

Sometimes an application may place dlls that are shared between multiple executables in the package in a common dll folder.  Prior to Windows Vista, this required modifying the Path variable, but starting in Vista Microsoft introduced "App Paths", one of the purposes of which was to allow an executable to declare additional folders for dll searching that are specific only to that executable.  Registered under the key "HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths", the listed folders would augment the normal dll search algorithm, to first check the current working directory, then folders listed under ".../App Paths/exename/Path" registry string, and finally looking in the Path Variable.

 

Under MSIX, the search path used is only to check the current working directory, and then the appropriate System folder (System32 or SysWow64).  Thus, these dlls are not found. 

 

I have very simple a purpose built MSI installer that will demonstrate.  Email me for a copy.

0 Replies