Hi, m6rk.
We create a folder under LocalApplicationData with the name of our company, and cache files there that we don't want impacted by updates. Note that they will also remain after the user uninstalls the app, which is good and bad. It's good in case they are uninstalling and reinstalling for some reason, but it's bad if you care that you're leaving them behind if they just uninstall.
To get to that folder:
string userFilePath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
So you might do something like this:
string wheresMyDataFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "mycompanyname");
When you run our application, it checks to see if the Folder with our company name exists, and if it doesn't, we create it and copy the files over there. If the Folder is there, we still check for each file and copy them over if they don't exist. After the first time, everything will exist, and it won't override them unless you specifically code for that.
You will want to add the files to your project, mark them with a build action of "content" and a "copy to output directory" value of "copy always", to make sure they get deployed. They end up in System.Windows.Forms.Application.StartupPath, so you can just copy them from there.
RobinDotNet
Click here to visit my ClickOnce blog!