My program contains a sql lite db file which my program creates after first run and then stores the data inside updon app usage. The database builds up over a period of time.
The db file is created in the installation directory of the program
I have to update the app on a regular basis when there are bugs fixed, so basically I publish a new msi installer, the installer removes old installation files except db file and install new program files.
Some user’s do not install it to the default location so in their selected location the db file is not present.
I want to know if it’s ok to store data files to some program data folder outside the install dir ? so that every new update of my program can access the data from that program data folder.. ?
Is there any program data directory in windows xp, vista and 7 ? and how to access it in C#/
It is very dangerous to store user data in the application folder. Not only will the data be destroyed if the user updates or uninstalls your app, but Standard users cannot even write to the app directory.
I typically include a seed database in the application and copy it to a folder in the
Environment.SpecialFolder.ApplicationDatafolder when the application launches. All user data is stored in the copy; if the user uninstalls the application the seed database is deleted but the user data remains. See this SO answer for an example.