2008-10-18 6 views
1

В VS2008 я написал службу C#, установщик и создал установочный пакет для его установки. Службе необходимо загрузить файл xml для работы. Где лучше всего разместить этот файл в различных папках файловой системы, предлагаемых проектом установки VS, и как я могу ссылаться на эти пути из моего кода?Поиск путей установки в C#

Благодаря

[я должен указать на сервис работает как LocalService, что означает, что ApplicationData папка, предлагаемый пункт «пользователь Application Data Folder» в проекте установки VS не доступна, даже если «Установить для всех пользователей "используется во время установки. Я мог бы легко взломать это, но хотел бы понять передовую практику]

ответ

4

Я не уверен, какое место лучше хранить XML-файл. Я не думаю, что это будет иметь большое значение. Но если вам нужно получить специальный путь к папке в системе, вы можете использовать класс среды для этого. Следующая строка кода получает путь к файлам программы:

string path = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); 
+0

OK, простой пример. Установщик создает папку% программных файлов% \ mycompany \ myapp, но это может быть изменено, если пользователь установит изменение пути установки. Так, например, как я могу попасть в папку установки? Код в этом примере только доходит до ProgramFiles. – spender 2008-10-18 20:53:06

0

Вы всегда можете использовать реестр.

1

Чтобы прочитать путь установки, используемый программой установки, созданной из проекта установки:

1) Открыть «Пользовательские действия» редактор в настройках проекта

2) Добавить пользовательское действие с вашего узла, где расположен ваш класс инсталлятор (Если вы еще не сделали этого)

3) Выберите этот заказ действие и добавить /myKey="[TARGETDIR]\" к CustomActionData в собственности сетки

4) в классе Installer вы можете получить доступ к Валу ue следующим образом: Context.Parameters["myKey"] в вашем методе переопределить в зависимости от вашего выбора на шаге 2

1

Это очень старый вопрос, но поскольку я не согласен с принятым ответом, по крайней мере, если файл XML будет обновлен программой, я Я все равно отправлю это.

Что я делаю при установке серверной программы (службы Windows или другой программы, отличной от пользователя), заключается в установке файла настроек по умолчанию или шаблона XML в Program Files вместе с программой. Но я никогда не пытаюсь писать в этот файл - это обычно не допускается.

Вместо этого во время инициализации программы я проверяю, был ли файл ранее скопирован в подпапку, созданную в C: \ ProgramData, то есть "C: \ ProgramData \ myCompanyName \ myProgramName \ mySettingsFile.xml". (Найти C: \ ProgramData с помощью Environment.SpecialFolder.CommonApplicationData - см. Здесь: http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx). Если файл настроек XML уже существует, я просто открываю его и использую его - он доступен для записи. Если он не существует, я при необходимости создаю подпапки и скопирую файл настроек шаблона XML из Program Files - это должна быть разовая операция, которая выполняется только при первом запуске программы после установки.

См. Дополнительную информацию: As a developer, how should I use the special folders in Windows Vista (and Windows 7)?