Изменение значения в файле.config на основе выбора пользователя в установке InstallShield 2013
Извините - я новичок в InstallShield. Я унаследовал проект InstallShield 2013, который предоставляет пользователю диалоговое окно, которое позволяет пользователю выбрать SQL Server и на основании их выбора устанавливает значение в файле конфигурации. Это не работает, поэтому я открыл проект в IS и посмотрел изменения текстового файла в разделе "Конфигурация системы", и там нет ничего, что могло бы сделать это. Итак, как мне выяснить, где это происходит (или не происходит в моем случае), и как мне заставить его работать? Мне нужно установить источник данных и исходный каталог в файл с именем server.config.
Итак, как мне определить, что выбрал пользователь, а затем сохранить его в этом файле? Похоже, я могу настроить изменение текстового файла, но как мне получить доступ к значениям, выбранным пользователем? И как я могу определить, где находится "код", который должен это делать?
Спасибо Бен
2 ответа
Я бы попытался отследить это из диалогового окна и элементов управления, о которых идет речь, или по значению в подробном журнале. Поскольку вы говорите, что сегодня это не работает, вероятно, произойдет прерывание потока, который я опишу ниже, и, поскольку вы не знаете полное состояние проекта установки, это может быть трудно определить. Так что ищите из того, что вы знаете.
Сверху вниз: что настраивается
Сначала найдите диалог, который вы заполняете как пользователь, делающий выбор. Затем выясните свойство, с которым связан определенный элемент управления. Теперь у вас есть тема; потяните его
Ищите в прямом редакторе ссылки на недвижимость. Если свойство называется MYCONFIG, найдите только это: MYCONFIG. Вы, вероятно, найдете какое-то использование, похожее на [MYCONFIG], которое обычно представляет собой строку формата, указывающую на использование значения MYCONFIG. Вам также может потребоваться выполнить поиск по всем файлам, связанным с вашим проектом, поскольку реализации пользовательских действий могут храниться в коде вне вашего проекта InstallShield.
Использование может быть в ControlEvent, Custom Action или какой-либо другой таблице. Если он находится в ControlEvent, его можно использовать для установки другого свойства. То же самое, если он находится в Custom Action, который устанавливает свойства (тип 51), которые могут быть проще для понимания в представлении Custom Actions и Sequence. В этом случае также ищите свойство, которое установлено.
Если вы найдете его в такой таблице, как ISSearchReplace*, ISXml* или IniFile, возможно, это часть изменений текстовых файлов, изменений файлов XML или изменений файлов INI, и это представление должно облегчить понимание.
Может быть, эта тема где-то тупиковая. Свойство устанавливается, но на него никогда не ссылаются. Поэтому попробуйте поискать с другого конца.
Вверх: что написано
Если есть изменения текстового файла, изменения XML-файла, изменения INI-файла или пользовательские действия, которые ссылаются на файл, который вы хотите обновить, посмотрите, где они получают свою информацию. Попытайтесь следовать этому назад. Если они хорошо написаны, вы должны быть в состоянии идентифицировать свойство (учитывая, что свойство с именем Custom ActionData происходит от свойства, совпадающего с именем настраиваемого действия, в котором оно используется), а затем проследить это далее, используя те же идеи, что и выше, но в другом направлении.
Где проблема?
Если потоки не соединяются, возможно, это проблема. Также возможно, что пользовательскому действию не хватает разрешений, но он не сообщает об ошибке или что имя файла или путь были неверно настроены где-то по пути. Ищите такие маленькие вещи, если они выглядят так, как будто они должны работать, но не работают.
Оказывается, я неправильно понял проблему, и проект никогда не был настроен на изменение этого значения, поэтому все, что мне нужно было сделать, это настроить изменение текстового файла, и оно отлично работает. Спасибо @Michael Urman за тщательный ответ - я действительно ценю это!