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