Installshield - обновляет реестр в соответствии с файлом, указанным во время выполнения. - PullRequest
0 голосов
/ 10 января 2010

Я пишу основной установщик MSI, используя installshield 2010. Другая компания предоставит файл .reg, который установщик будет читать во время выполнения, и соответствующим образом обновит реестр.

Я не могу понять,как это сделать.

Мне удалось написать скрипт, используя Installscript, который выполняет это, но когда этот скрипт выполняется в режиме дифференцированного выполнения, я не знаю, как добраться до исходного каталога, где находится установка.лежит exe (и файл .reg).

MSIGetproperty не работает, и все, что я получаю для SETUPEXEDIR, это "".

Ответы [ 2 ]

2 голосов
/ 10 января 2010

Во время отложенного выполнения у вас нет доступа к большинству свойств. Вы также можете: 1. Используйте свойство CustomActionData для передачи нужного значения. 2. Используйте немедленное настраиваемое действие, которое обновляет таблицу реестра тем, что она читает из файла REG. Таким образом, механизм установщика Windows позаботится об откате.

Я также могу предложить альтернативное решение: Другая компания предоставит MST-файл с таблицей реестра, содержащей то, что должно быть в REG-файле. Затем будет выполнена установка со свойством TRANSFORMS, указывающим на MST. Таким образом вы получаете откат и удаляете бесплатно.

1 голос
/ 21 января 2010

Вы можете использовать таблицы Signature, DrLocator и AppSearch вместе, чтобы поместить местоположение файла реестра в какое-либо общедоступное свойство. Мы назовем это «MY_REG_FILE». Затем вы устанавливаете условие для вашего пользовательского действия на «MY_REG_FILE». Если файла на самом деле нет, свойство не будет установлено, условие будет оценено как ложное, и действие не будет выполнено.

В MSDN есть пример совместного использования трех таблиц для поиска файла - http://msdn.microsoft.com/en-us/library/aa371552%28VS.85%29.aspx

...