Создать уникальный каталог данных приложения для каждого экземпляра приложения

Я написал aC# приложение, которое установлено как много экземпляров, в разных каталогах, определенных пользователем. например

C:\Program Files(x86)\MyApp1
C:\Program Files(x86)\MyApp2
C:\MyApp1
C:\MyApp2
...

Я хочу записать / прочитать файлы данных в отдельных каталогах, по одному для каждого из этих экземпляров, в Environment.SpecialFolder.LocalApplicationData,

Каков наилучший подход для использования в моем коде для ссылки на соответствующий каталог из каждого установленного исполняемого файла. например

C:\Program Files(x86)\MyApp1\app.exe to reference unique app dir C:\Users\xxxx\AppData\Local\MyApp1\

3 ответа

Решение

Вы можете добавить уникальное значение в конец пути: C:\Users\xxxx\AppData\Local\MyApp\ghfdsjgb23

Если для каждой установки не существует такого уникального значения, вы можете использовать хэш пути установки или аналогичный.

Есть несколько способов удовлетворить ваш запрос. Вот несколько возможных решений вашей проблемы: 1.

string sPath = System.Environment.GetFolderPath(     Environment.SpecialFolder.CommonApplicationData) 
       + Path.DirectorySeparatorChar + APP_NAME + Path.DirectorySeparatorChar`

где APP_NAME - ваше имя сборки. Этот код окажется в папке *...AllUsers\Application Data\APP_NAME*.

  1. Используйте IsoltaedStorage

но вы ограничены в космическом плане..

Если вы используете эти данные только из своего приложения и для каждого пользователя должны быть доступны разные данные, вы можете взглянуть на IsolatedStorage, он позволяет абстрагироваться от реального местоположения данных и вы можете легко сохранять / извлекать данные.

тот факт, что вы устанавливаете одно и то же приложение в разные папки и под разными именами, является показателем, как минимум, того, чего я сейчас не могу понять, но в конце вы должны разработать его таким образом, чтобы каждый экземпляр работал изолированно, как если бы это были действительно разные приложения (например, word, excel, notepad...), означающие не жестко закодированные пути:)

Другие вопросы по тегам