Инициализация user.config или app.exe.config во время установки - PullRequest
11 голосов
/ 16 сентября 2008

Я занимаюсь разработкой приложения .NET WinForms, которое использует user.config для хранения различных полезных настроек, таких как URL-адреса веб-служб интрасети. Мы хотели бы сделать возможным импорт пользовательских начальных настроек в процессе установки. Вариант использования для этого - если у компании есть 100 машин, на которые они хотят установить программное обеспечение, и у них должна быть ссылка на данный веб-сервис интрасети, это не нужно настраивать вручную на всех машинах.

В настоящее время мы используем проект установки VS2008 для создания установочного пакета.

До сих пор наша идея состояла в том, чтобы позволить установщику создать собственный исходный файл .config с информацией (из шаблона), а затем поместить его на место вместо файла по умолчанию, устанавливаемого проектом установки.

Однако я не вижу другого способа сделать это, кроме этих немногих:

  1. Закрепите имя исполняемого файла в пользовательском действии установщика (производном от System.Configuration.Install.Installer), чтобы использовать класс ConfigurationManager для определения пути к файлу .config. Это потребует ручного изменения установщика, если имя исполняемого файла изменится.
  2. Сверните наши собственные классы конфигурации или иерархию файлов / папок, чтобы сохранить настройки. По сути, это лишит нас преимуществ механизма изоляции (который также является здесь препятствием), который предоставляет .NET, если я правильно понимаю.

Кто-нибудь знает какие-либо альтернативы или способы сделать эти две вкусными?

Боюсь, что ответом может быть «не делай этого, это побеждает дух механизма, брось свой собственный механизм импорта настроек».

Ответы [ 3 ]

3 голосов
/ 02 октября 2008

Если вы создаете это приложение для крупных компаний, вам следует взглянуть на Групповая политика . К сожалению, это вернет ваше приложение в золотой век реестра. Я понимаю, что это будет огромным изменением в вашей программе, но это путь к этому.

Однако, если URL-адрес веб-службы является единственным, вам необходимо настроить этот способ, тогда GPO может оказаться излишним. В этом случае я бы жестко закодировал имя исполняемого файла.

1 голос
/ 17 сентября 2008

Я знаю, что это не совсем тот ответ, который вы ищете, но вы должны выбрать более «серьезный» установщик. Мы используем Advanced Installer, и это здорово, делает все, что только можно придумать.

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

Если для вас приемлемо жестко закодировать хотя бы один параметр в файле конфигурации, вы можете использовать его, чтобы указать путь к базе данных, веб-службе или сетевому файлу, где можно сохранить все пользовательские параметры конфигурации. Используя System.Configuration.ConfigurationManager.OpenExeConfiguration (), вы можете обновить файл конфигурации из этого расположения либо при первом запуске, либо при каждом запуске приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...