InstallShield XML File Changes - Изменить атрибут узла при установке
Я строю установку веб-службы с помощью InstallShield 2012, и мне нужно изменить файл Web.config моего приложения на основе пользовательского ввода. Я ввел диалоговое окно PromptServerAndDatabase сразу после диалогового окна DestinationFolder. Я также настроил файл Web.config в представлении XML File Changes в InstallShield. Вот моя основная структура файла web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<configSections>
...
</configSections>
<appSettings>
<add key="DatabaseServer" value="sql08r2">sql08r2</add>
<add key="DatabaseName" value="UserDatabaseName">UserDatabaseName</add>
</appSettings>
...
</configuration>
В настоящее время я могу успешно изменить буквальное значение узла, но не могу изменить атрибут узла.
Вот структура внутри InstallShield в представлении XML File Changes:
Кроме того, здесь есть вкладка "Дополнительно", которая практически идентична для всех трех узлов. Оба узла, связанные с именем базы данных, используют одно и то же свойство, тогда как узел для имени сервера использует свойство [SERVER_NAME] (не показано):
После запуска установщика файл Web.config успешно обновляется. Значения узлов Database Name и Server Name обновляются. Однако значение для атрибута "value" в узле Database Name отсутствует, хотя оно должно отражать тот же текст, что и фактическое значение узла. Как только я отработаю это, мне нужно будет продублировать его для узла Server Name, но я упустил это для простоты.
Я провел дополнительное исследование по этому вопросу и нашел этот сайт, который в целом был очень полезным, но не решил эту проблему для меня:
http://helpnet.installshield.com/installshield16helplib/XML-XPath.htm
Может быть, ответ есть, и я просто скучаю по нему, ИДК.
Спасибо за любую помощь, предложенную в этом.
1 ответ
Итак, моя проблема заключалась в том, что у меня было общее недопонимание вкладки "Общие" и добавляемых там атрибутов. Атрибуты на вкладке Общие - это буквально атрибуты узла XML, а столбец значения каждой записи в этой таблице - это значение, которое будет установлено для атрибута. Таким образом, изменив это значение на свойство, которое я менял, это решило мою проблему. Я оставил вкладку "Дополнительно" как есть, потому что мои параметры корректно меняли значение содержимого элемента. Наконец, я изменил запрос XPath, чтобы удалить атрибут value, потому что есть вероятность, что устанавливаемый файл web.config изменит это значение в будущем. Поскольку в узле appSettings есть только один узел добавления со значением ключа DatabaseName или ServerName, поиск XPath для ключа ="" - это все, что мне было нужно.
Вот визуал: