Вопрос

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

Спасибо

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

Это было полезно?

Решение

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

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

Другие советы

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

1) Откройте редактор «Пользовательские действия» в вашем проекте установки.

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

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

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

Это очень старый вопрос, но поскольку я не согласен с принятым ответом, по крайней мере, если 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 — это должна быть разовая операция, которая выполняется только при первом запуске программы после установки.

Смотрите здесь для более подробной информации: Как разработчику следует использовать специальные папки в Windows Vista (и Windows 7)?

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top