Как использовать файл ответов InstallShield без изменения всех значений? - PullRequest
1 голос
/ 02 ноября 2011

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

Когда установка запускается нормально (без вывода сообщений), она запрашивает у пользователя различную информацию, которая записывается в INI-файл. Если это новая установка, она предоставляет значения по умолчанию для приглашений, а если это обновление, то показывает значение из INI-файла.

Я хочу создать автоматическую установку, которая обновляет некоторые значения в INI-файле, не перезаписывая другие. Проблема в том, что когда я создаю файл setup.iss, он явно использует значения из моего INI-файла.

Есть ли способ заставить установку без вывода сообщений принять существующее значение? То есть как если бы пользователь просто нажал «Далее» без изменения отображаемого значения?

Вот надуманный пример:

Предположим, что при первой установке запрашивается «Имя», и я ввожу «WileCau». Имя хранится в ini-файле программы.

В следующий раз, когда я запускаю установку, и она запрашивает «Имя», он будет читать ini-файл и отображать «WileCau» в поле ввода, и я просто нажимаю «Далее», чтобы принять существующее значение.

Проблема в том, что если я создаю установку без вывода сообщений для этого, она содержит что-то вроде:

...
[{GUID}-DlgOrder]
...
Dlg1={GUID}-AskText-0
...
[{GUID}-AskText-0]
szText=WileCau     <-- Puts this text in the entry field
Result=1           <-- Indicates clicking "Next"
...

Где написано szText=WileCau Я хочу, чтобы оно использовало любое значение из поля ввода пользователя (например, возможно, это "Боб").

Ответы [ 2 ]

3 голосов
/ 02 ноября 2011

Вы можете реализовать свои собственные процедуры молчаливого диалога, используя SilentWriteData и SilentReadData.Например, вы можете проверить во время записи, является ли значение значением по умолчанию, и, если оно есть, написать специальную строку.Во время чтения, если вы читаете специальную строку назад, не переопределяйте значение по умолчанию.Вам нужно будет сделать это для всех существующих диалогов, которые вы используете во время OnFirstUIBefore, и вам нужно это поведение, возможно, включая переопределения для тех, которые предоставляет InstallShield.

1 голос
/ 02 ноября 2011

INI-записи имеют формат , поэтому они поддерживают свойства установщика.Это означает, что вы можете использовать свойство установщика вместо жестко заданного значения.Например:

[MY_PROPERTY]

Это свойство затем может быть связано с вашим пользовательским элементом управления, который получает информацию от вашего пользователя (например, поле редактирования).

...