Forum Discussion
PSF FileRedirectionFixup not working as intended?
HeyJohn Wildes ,
Thank you so much for using the Package Support Framework. It makes me happy when I hear people using it.
Quick question before I mention a solution. Does this ini file exist before the app is started or is it made while the app is running?
Darren_Hoehna , so normally it would. When the application starts, it checks to see if there's an INI file, if it doesn't exist then it creates one.
If one exists, but is blank (no meaningful data no connection strings) it brings up a configuration screen upon startup that asks the user to fill in database server, db, auth information. We don't want this at all. However, if I include an INI that has prepopulated strings and database information in it (which would be different for every customer) it poses a problem.
- Darren_HoehnaAug 07, 2020Microsoft
I see. So, what you want PSF to do is to find the ini file is ProgramFilesX86/ApplicationData, right?
The FRF works differently than what we naturally think as redirection.
FRF takes the path we want to redirect and PSF takes care of the redirection for us. An example from your configuration file.
{ "base": "VFS\\ProgramFilesX86\\IMPAC\\METRIQ", "redirectTargetBase": "C:\\IMPAC\\METRIQ", "patterns": [ "IMSPHospital\\.ini" ] },
This is telling PSF to redirect all file operations in VFS\ProgramFilesX86\IMPAC\METRIQ to C:\IMPAC\METRIQ for all files that match the pattern IMSHospital\.ini.
What we want to do is tell PSF to redirect all file operations in ProgramFilesX86\ApplicationData that match the pattern IMSHospital\*.ini.
Because ProgramFilesX86 is a known folder I would suggest to use the known folder options instead.
Your configuration would look like this.
"config": { "redirectedPaths": { "knownFolders": [ { "id": "ProgramFilesX86", "relativePaths": [ { "base": "ApplicationData\\IMSHospital", "patterns": [ ".*" ] } ] } ] } }
Can you please try that and get back to me?
- John WildesAug 11, 2020Brass Contributor
Darren_Hoehna , thanks for the help.
It's not working. I now get an endless loop error from the application. Where is it supposed to end up writing when I do this?
- John WildesAug 11, 2020Brass Contributor
Darren_Hoehna when I do this I get this combination of error.
Error 1 is I'm assuming when the application sees that there's no .ini file in the C:\Program Files(X86)\IMPAC\METRIQ folder and attempts to create it. With the redirection in place I was hoping this would see no INI and then would attempt to write it to the "writable" end user %APPDATA% location.
Error 2 is because it can't log an error to the ErrLog and trying to write the INI file again.
I have to use taskmanager to kill the processes.
I've also copied the config.json file I'm using, again maybe I'm doing something wrong.
{ "applications": [ { "id": "HOSPITAL", "executable": "VFS/ProgramFilesX86/IMPAC/METRIQ/HOSPITAL.exe", "workingDirectory": "VFS/ProgramFilesX86/IMPAC/METRIQ" }, { "id": "IMSMAX", "executable": "VFS/ProgramFilesX86/IMPAC/MOSAIQ Connect/IMSMAX.exe", "workingDirectory": "VFS/ProgramFilesX86/IMPAC/MOSAIQ Connect" } ], "processes": [ { "executable": "HOSPITAL", "fixups": [ { "dll": "FileRedirectionFixup32.dll", "config": { "redirectedPaths": { "knownFolders": [ { "id": "ProgramFilesX86", "relativePaths": [ { "base": "ApplicationData\\IMSHospital", "patterns": [ ".*" ] }, { "base": "ApplicationData\\ErrLog", "patterns": [ ".*" ] } ] } ] } } } ] } ] }
There's no APPLICATIONDATA directory listed in the MSIX package that I have.