Подтвердить что ты не робот

Инициализация user.config или app.exe.config во время установки

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

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