Настройки Web.config потеряны при использовании установщика Wix для выполнения обновления

Я создал установщик WiX для развертывания набора веб-сайтов на сайте клиента и использую xmlfile для добавления правильных значений имен хостов и строк подключения в наши файлы web.config. Поскольку эти значения исходят из пользовательского интерфейса установщика, у меня возникла проблема при установке обновления с использованием:

msiexec /i Websites.msi  /l*vx Website.log REINSTALL=ALL REINSTALLMODE=vomus

Хотя обновление выполняется правильно, действия xmlfile подставляют пустые значения, поскольку пользовательский интерфейс не запускается.

Есть ли способ передать эти значения в установщик без разбора XML или повторного запроса инженера по установке?

Привет, Дэмиен


person Damien Ryan    schedule 14.12.2010    source источник


Ответы (2)


Вам понадобится Remember Property. Шаблон адаптирован только для XML вместо Registry. WiX еще не имеет шаблона просмотра XML, поэтому вам придется написать собственное действие.

Еще одна проблема, на которую следует обратить внимание, заключается в том, что, поскольку вы изменяете XML, будущие обновления не будут устанавливать более новые версии XML по умолчанию, поскольку теперь в нем есть пользовательские данные.

person Christopher Painter    schedule 14.12.2010
comment
Это может не очень хорошо работать с IIS/ASP.NET (к сожалению, ничего нового там нет), но если вы разделите свой XML на 2 XML, установка будет намного проще. По сути, один файл, который пользователь не изменяет, который установщик может безопасно заменять снова и снова, и другой XML-файл, который изменяет пользователь/приложение/установщик, в котором есть ваши точки изменения. В основном подумайте о stock.xml и override/transform.xml. - person Christopher Painter; 14.12.2010
comment
Это в основном то, что я сделал. Я надеялся, что мне никогда не придется писать настраиваемое действие, но не мог обойти это. Я собрал (довольно грязную) C# dll, чтобы считывать нужные мне значения из любых текущих файлов web.config и web.constants.config и сохранять их как существующие переменные WiX. Не идеально, и я должен следить за тем, что делает команда разработчиков, но этого достаточно, чтобы продолжать. - person Damien Ryan; 06.01.2011

Если вы хотите, чтобы ваш файл web.config изменялся только во время установки, вы можете настроить свои компоненты, содержащие элементы XmlFile, с условием Not Installed. В этом случае действие по изменению XML-файла не будет выполняться для этих компонентов во время обновления.

person Yan Sklyarenko    schedule 14.12.2010
comment
К сожалению, нам потребуется обновить как файл web.config, так и исходные значения, которые были переданы установщику, и подключить их обратно к connectionStrings. У меня плохое предчувствие, что мне придется либо написать какой-то анализатор строки подключения в качестве пользовательского действия, либо заставить обновление каким-то образом всплывать на экране конфигурации. - person Damien Ryan; 14.12.2010