InstallAware Держите оригинальный targettdir в режиме обновления - PullRequest
0 голосов
/ 04 января 2012

Я использую InstallAware для сборки, а также для поддержки веб-обновлений. В процессе установки пользователь впервые может выбрать папку назначения. Система также предоставляет значение по умолчанию.

Все работает нормально, пока пользователь не выберет свою пользовательскую папку вместо папки по умолчанию. В режиме обновления программа установки устанавливает приложение в целевой каталог по умолчанию вместо выбранного пользователем. Как документация от InstallAware, режим обновления сначала удалит приложение, а затем установит его снова. Поскольку я запускаю обновление в режиме без вывода сообщений, установщик получит значение по умолчанию.

Как мне установить его в исходном месте назначения?

Ответы [ 3 ]

4 голосов
/ 23 ноября 2012

К счастью, по умолчанию InstallAware реализует очень простые способы достижения этой функциональности.

Вы можете отслеживать различные параметры установки, устанавливая предопределенную переменную компилятора «LOADOLDDATA» InstallAware.

Если установлено значение ИСТИНА, механизм настройки будет загружать определения функций и другие сохраненные данные (см. Также команду «Загрузить выбор объектов» для получения дополнительной информации в документации IA) из более старой версии установки. Обычно эти данные загружаются только между одними и теми же версиями установки при работе с одной и той же установленной версией приложения для операции обслуживания или удаления. При любом другом значении этой переменной компилятора это нормальное поведение сохраняется.

В качестве альтернативы, «Сохранить выбор элементов» и «Загрузить выбор элементов» можно использовать в коде сценария, если вы хотите перенести состояния параметров между различными версиями установки.

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

1 голос
/ 02 марта 2012

Я собираюсь использовать веб-обновления от InstallAware в предстоящем проекте; часть моего технико-экономического обоснования включала этот технический документ, хотя и начиная с версии 7.0, я предполагаю, что он все еще актуален: http://www.installaware.com/installaware_web_updates.pdf

Самое главное для вашего вопроса, стр. 14 гласит:


Определение местоположения клиента обновлений

Для установки All Users смотрите в следующем разделе реестра: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \

Для установки Just Me посмотрите в следующем реестре ключ: HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \

В обоих случаях прочитайте данные для строкового значения UninstallString. Типичное значение для этой строки: «C: \ Documents and Settings \\ Application Data \\. exe». REMOVE = TRUE MODIFY = FALSE. приложение для удаления параметров командной строки REMOVE = TRUE MODIFY = FALSE, а также двойные кавычки, окружающие основную строку. Последняя строка, которая указывает местоположение клиента обновления (как как и ваша программа установки) должны иметь следующую форму: C: \ Documents and Настройки \\ Application Data \\. Exe


Вам нужно будет прочитать это значение ключа и присвоить значение переменной $ TARGETDIR $ (я считаю, что это имя) в коде MSI.

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

0 голосов
/ 04 января 2012

Большинство инструментов настройки разработки включают механизм, который извлекает исходный путь установки и использует его во время обновления. Я полагаю, что в InstallAware его нет, поэтому вам придется сделать это самостоятельно:

  • написать пользовательское действие , которое находит старый путь установки
  • это пользовательское действие должно установить для свойства папки установки этот старый путь
  • настраиваемое действие должно выполняться до CostFinalize action

Обратите внимание, что только пользовательские действия win32 DLL , VBScript и WiX Toolset могут устанавливать свойства установщика.

...