Создать уникальный каталог данных приложения для каждого экземпляра приложения
Я написал 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*.
- Используйте IsoltaedStorage
но вы ограничены в космическом плане..
Если вы используете эти данные только из своего приложения и для каждого пользователя должны быть доступны разные данные, вы можете взглянуть на IsolatedStorage, он позволяет абстрагироваться от реального местоположения данных и вы можете легко сохранять / извлекать данные.
тот факт, что вы устанавливаете одно и то же приложение в разные папки и под разными именами, является показателем, как минимум, того, чего я сейчас не могу понять, но в конце вы должны разработать его таким образом, чтобы каждый экземпляр работал изолированно, как если бы это были действительно разные приложения (например, word, excel, notepad...), означающие не жестко закодированные пути:)