Поиск путей установщика в С#
-
03-07-2019 - |
Вопрос
В 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)?
Вы всегда можете воспользоваться реестром.