Domanda

As I searched there is a folder in windows partition named "ProgramData" that contains applications' data which is used by applications in run time. Since this folder does not need admin permission and it is common between system users it is the best place to put the runtime files. In C#.Net I reach this folder address by this code:

Application.CommonAppDataPath

The problem is that I can not find the right folder to put my data in it while I'm creating windows installer(msi file) by Visual Studio Setup Project. I want to know how can I add this folder to my setup project.

Regards.

È stato utile?

Soluzione

Here is how you can add it:

  1. Go to "File System" view in your project and right click on "File System on Target Machine"
  2. Under "Add Special Folder" select "Custom folder" and give it a name
  3. Now right click on that folder and select "Properties Window"
  4. Set the "DefaultLocation" attribute to this: "[CommonAppDataFolder]"
  5. Now you can add any sub-folders you want under this new folder and place in there the files desired and your files should install in the desired path.

http://msdn.microsoft.com/en-us/library/windows/desktop/aa367992(v=vs.85).aspx

Altri suggerimenti

I found out that my question was wrong for my purpose because of the permission stuff. The solution I found is written here in stackoverflow.com and I mixed it up by the following code in my application to get address of public documents.

private static string getAddress()
    {
        RegistryKey rk = Registry.LocalMachine;
        RegistryKey sk = rk.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\explorer\\Shell Folders");
        string address = "";
        if (sk != null)
        {
            address = (string)sk.GetValue("Common Documents", @"c:\Users\Public\Documents");
        }
        return address;
    }

Let's overview what I said and what I did, First I found out that what I wanted is wrong and ApplicationData folder is accessible just for it's creator while I wanted a folder that is shared between all Users. So I found this link and followed it, create the folder I wanted in FileSystem Explorer in my Installer Project. Then I changed my C# code and made it read the address from registry.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top