У нас была похожая проблема при разработке приложения, над которым я сейчас работаю. Мы хотели, чтобы у вас была возможность начать новую установку при первой настройке с настройками, перенесенными с другого компьютера, или с помощью утилиты конфигурации. Честно говоря, я не знаю, насколько хорошо наше решение в грандиозной схеме, но я могу рассказать вам, что мы сделали, что работает для нас, пока.
В нашем случае многие из этих настроек в конечном итоге попадают в файл app.config, которым не рекомендуется пытаться манипулировать извне самого приложения. Это может быть сделано, но это опасно несколькими тонкими способами. Если бы это было не так, лучше всего было бы добавить «настраиваемое действие» для проекта установки, которое вставляло бы данные в файл, базу данных или все, что мы использовали для хранения наших настроек. Отправную точку для того, как это сделать, можно найти в MSDN .
Но так как это было не вариант, мы решили, что, вероятно, самый простой способ получить данные через установку в приложение, без встраивания их в установочный пакет, - это использовать файл «переезд». Это файл, о котором знает ваша установка, но который не встроен в .MSI. Он должен просто находиться в известном месте относительно MSI при установке. Вы сообщаете проекту установки, что это за файл, где он должен быть и где его поместить. Затем ваше приложение может при запуске проверять его существование и обрабатывать все, что оно там находит. В вашем случае это будет переопределение настроек URL. Затем приложение может удалить файл, чтобы оно не загружалось при каждом запуске.
В проекте установки для этого файла необходимо задать несколько свойств, чтобы обеспечить его правильную работу в соответствии со стилем пакета, который создает проект VS Setup. Убедитесь, что вы установили их, иначе вы можете получить ошибки или другое странное поведение, если исключен файл перехода, поскольку он не нужен.
- Состояние: НЕ УСТАНАВЛИВАЕТСЯ
- PacakgeAs: vsdpaLoose
- Vital: False
Мы называем наш файл AutoImport.Settings.xml. Это пользовательский XML-файл, в котором хранятся все данные, с помощью которых мы хотим иметь возможность инициализировать наше приложение при его установке. Он следует тому же формату, который мы используем, когда мы вручную экспортируем / импортируем конфигурации из приложения во время выполнения, и использует тот же механизм. Он просто делает это автоматически при запуске, если находит файл там. Это позволяет нам настроить один «прототип» машины со всеми сетевыми настройками, которые мы хотим иметь, экспортировать эти настройки, а затем отправить этот файл импорта для автоматической загрузки с любыми другими установками, которые мы делаем в этой сетевой среде. *
Как я уже сказал, такое чувство, что должен быть "лучший" способ. Единственное, что мы могли придумать, означало отход от механизмов app.config и user.config, которые имеют свои преимущества. В итоге мы решили, что это альтернатива с минимальным трением, полностью отвечающая нашим потребностям.