изменение файла конфигурации при установке с помощью installshield 2011 - PullRequest
2 голосов
/ 22 июля 2011

Мне нужно изменить файл конфигурации при установке с использованием пользовательских данных, и я использую базовый MSI-проект installshield 2011.Я предполагаю, что это можно сделать с изменениями файла XML, поэтому я создал диалог с полями редактирования для этих пользовательских входов и связал поля со свойствами, но не ясно, как связать свойства со значениями в моей конфигурации.Как это сделать?Это структура моего файла конфигурации:

<configuration>
    <appSettings>
        <add key="Color" value=""></add>
        <add key="Shape" value=""></add>
    </appSettings>
<configuration>

Пользователь должен установить значения для цвета и формы.Может быть, лучше использовать другой вид проекта?Спасибо.

Ответы [ 3 ]

4 голосов
/ 22 июля 2011

Я всегда использую изменения текстового файла и настраиваю файл конфигурации следующим образом

<configuration>
    <appSettings>
        <add key="Color" value="">%color%</add>
        <add key="Shape" value="">%shape%</add>
    </appSettings>
<configuration>

Затем задайте замену текста для поиска * .config и замените текст% color% и% shape% навход из вашего диалогового окна.

Надеюсь, это поможет

3 голосов
/ 22 июля 2011

InstallShield XML изменения используют операторы XPath. Требуется некоторое время, чтобы привыкнуть, чтобы попробовать что-то вроде этого.

В разделе «Изменения файлов XML» выберите «Файлы XML» и щелкните правой кнопкой мыши «Новый файл». В общей таблице вы выбираете каталог и имя файла, которым вы хотите манипулировать, и устанавливаемые функции, которые вызывают изменение.

Щелкните правой кнопкой мыши файл XML и выберите «Добавить предопределенный элемент | Конфигурационные файлы .NET | Файл веб-конфигурации | Настройки приложения | Добавить.

Вы увидите, что InstallShield создал запрос:

/ configuration / appSettings / add [@ key = "key" и @ value = "value"]

Это говорит MSI получить ссылку на узел добавления, который является дочерним по отношению к узлу appSettings, который является дочерним по отношению к узлу конфигурации, где атрибут ключа равен литералу "ключа", а атрибут значения равен литералу " значение". Вы действительно захотите настроить этот оператор XPath для сравнения на основе @ Key = "Color" и игнорировать атрибут value. Как только у него есть ссылка на этот узел, вы можете указать ему создать / установить значение атрибута «value» для содержимого вашего свойства. Помните, что в MSI символы [] возвращают значение указанного свойства. ([SOMEPROP] возвращает значение SOMEPROP).

Вот некоторые материалы для чтения:

http://kb.flexerasoftware.com/doc/Helpnet/installshield14helplib/XMLFileChangesView.htm

Если все эти вещи XML слишком сложны для вас, в последних версиях InstallShield также есть Изменения в текстовых файлах, которые могут быть выполнены так, как упомянул SteveLovell.

0 голосов
/ 11 февраля 2015

Пожалуйста, обратитесь по этой ссылке, объясняя, как динамически изменять файлы web.config:

http://helpnet.flexerasoftware.com/installshield16helplib/TextFileChanges-MSIProps.htm

...