Tuesday, April 11, 2023

Why do so many Windows applications misuse "appdata"?

Windows applications should not store static files common to all users (even if that is just one user) in the appdata folder. 

Common static files like:

  • Executables (.exe, .dll, .jar, .bin, .js...)
  • Collections (.cab, .zip, .7z...)
  • Installation (.msi...)
  • Configuration (.ini, json...)
  • Data (ryo, .db...)
These should be stored in c:\ProgramData (there is a hint in the very name). 
Of course, you would ask why would anyone care? That is a good question. The answer is that when backups are made of the appdata folder, it is a waste of backup time and space to store these files; especially the executables which can be very large in aggregate if all the user wants is data that pertains just to them (after all, these files are in c:\Users\<userid>\...).

And if there are multiple users, then these files a mere duplicates wasting storage space.