Поиск путей установки в c # - PullRequest
1 голос
/ 18 октября 2008

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

Спасибо

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

Ответы [ 4 ]

4 голосов
/ 19 октября 2008

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

string path = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
1 голос
/ 16 сентября 2013

Это очень старый вопрос, но, поскольку я не согласен с принятым ответом, по крайней мере, если файл 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)?

1 голос
/ 13 августа 2011

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

1) Откройте редактор «Custom Actions» в вашем проекте установки

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

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

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

0 голосов
/ 19 октября 2008

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

...