What you need to do is put the folders under LocalApplicationData instead of relying on them being in the same location as the application deployment files. So when the application runs, you can check and see if the folders are there, and if they are, do nothing. If they aren't, create them and put the data there that you want there.
Generally, you would create a folder with your company name under LocalApplicationData and maintain it yourslef.
You can access the local application data folder this way:
string userFilePath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
string myAppCache = Path.Combine(userFilePath, "mycompanyname");
string sourceFolder = Path.Combine(System.Windows.Forms.Application.StartupPath, "foldername");
If (!Folder.Exists(Path.Combine(myAppCache, "folder1")))
{
Directory.Create(Path.Combine(myAppCache, "folder1"));
//you might copy files here, or create directories, or whatever
}
and so on.
RobinDotNet
Click here to visit my ClickOnce blog!