Поиск путей к установщику в c #

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

Спасибо

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


person spender    schedule 18.10.2008    source источник


Ответы (4)


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

string path = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
person mohammedn    schedule 18.10.2008
comment
Хорошо, простой пример. Установщик создает папку% program files% \ mycompany \ myapp, но это может быть изменено, если лицо, выполняющее установку, изменит путь установки. Так, например, как я могу попасть в папку установки? Код в этом примере идет только до ProgramFiles. - person spender; 19.10.2008
comment
Ищете папку, в которой установлено приложение myapp? Как насчет того, чтобы просто заглянуть в каталог, в котором находится ваша сборка? Т.е. Assembly.GetExecutingAssembly (). Местоположение? - person OregonGhost; 19.10.2008

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

1) Откройте редактор «Настраиваемые действия» в своем проекте установки.

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

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

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

person rudolf_franek    schedule 13.08.2011

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

Что я делаю при установке программы серверного типа (службы Windows или другой программы, не связанной с пользователем), так это устанавливаю файл настроек XML по умолчанию или шаблон 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)?

person RenniePet    schedule 16.09.2013

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

person DylanJ    schedule 18.10.2008