Forum Discussion
PSF FileRedirectionFixup not working as intended?
You made the configuration file correct. You're all good there. 🙂
Thank you for trying out my suggestion. We'll get to the bottom of this issue and make your app work.
I'm going to type out my thought process here.
The configuration tells PSF to redirect all file operations in ProgramFilesX86\ApplicationData\[IMSHospital|ErrLog]
When the application looks for the .ini file in C:\Program Files X86\ApplicationData\IMSHospital\*.ini PSF will intercept that call and look at call the same method the application called, just in the redirected location.
The same happens when the call is made to make the file. PSF will intercept the call and redirect the createfile call to the redirected location.
From the error messages you attached (Thank you for attaching them) it seems like the application was able to find the ini file but the file is read-only. The error you are getting is that the application does not have permission to write over the file.
What I am confused about is why you got the "can't write over a file that is read-only." Your original configuration file didn't specify that the ini file is read-only. My guess is maybe the application writes the file as read-only.
Here is how we will continue.
1. We need to make sure PSF is being called. Is "PSFLauncher32.exe" listed as the executable for the application?
2. Maybe we are getting this error because the ini file is read-only. To test, could you please remove the ini file before you execute the application?
Thanks,
Darren.
Darren_Hoehna so the app checks for the presence of the IMSPHospital.ini in the root of the application directory. In this instance, it should be looking at C:\ProgramFilesX86\IMPAC\METRIQ\IMSPHospital.ini. If it doesn't find it, then it tries to create it.
From the application developer. They say that during this process it looks to a variable, or env variable, not sure which, that is called APPPATH, which essentially is where the .exe located, and our .exe is HOSPITAL.exe . In the package case, when the app is packaged, the path that comes up to the application is C:\Program files\WindowsApps\<package name>\VFS\ProgramFilesX86\IMPAC\METRIQ , which is READ ONLY by design because it is the application directory within the package, and not writable. This is why I believe we're getting these read only errors, is that in any case where it's trying to write something it's using this path and not a writable one.
- John WildesAug 15, 2020Brass Contributor
Darren_HoehnaThank you! Monday is fine.
- Darren_HoehnaAug 14, 2020
Microsoft
You are very welcome. I try to help where I can.
PSF's FRF handles redirection for the creation of directories. If you have a clean slate PSF can redirect the Create Directory calls.
I didn't think re-writing the application would work, but it was worth an ask.
I think a phone call would be great. Before we go further with that action I would like to talk to my boss first. He is out today but will be in the office tomorrow. Is it okay if I get back to you on Monday with a time?
- John WildesAug 14, 2020Brass Contributor
Darren_Hoehna thanks for your continued help. When i originally started this I had used the full path for re-direction, and what would happen was the INI file (which is just the first of many files of concern) would be copied out of the package to the redirected location. However, any changes to that file during the application session would be over written the very next time the application started. so rather than having the app read the redirected location, it reads within the package, and changes the copy that is in the writable location. This is not preferable.
Changing the application is not something that is going to happen in the current timeline I'm in.
I have a workaround specifically for the INI file that I'm going to look into, but it's only viable if I can have all new folder and file creation that would happen in the application directory happen in the writable redirected location. it's probably more of a phone conversation to discuss this, not sure if you would be open to that.
Thanks again for the help Darren.
- Darren_HoehnaAug 13, 2020
Microsoft
Thank you for replying.
I see what is going on. An environment variable is used so the app can figure out where the install directory is.
What you app developers said is correct. An application can't write to the install directory because it is read-only be default. We don't want to mess with that.
I can now understand why PSF was not able to redirect the file operation. I assumed that the application was writing to C:\ProgramfilesX68\... not C:\Program files\WindowsApps\\VFS\ProgramFilesX86\IMPAC\METRIQ. That would require a change in the configuration.
We need to tell PSF to redirect all writes to the pacakge root. I would try changing the config to point to VFS\ProgramFilesX86\IMPAC\METRIQ and see if that works.
Another question. Is it possible for the app developers to change the programs logic? That might be easier than trying to get PSF to work.