Значительное обновление Wix: как я предотвращаю переустановку службы Windows?

Я работаю над установщиком, который, как предполагается, устанавливает несколько служб Windows. Мы делаем новые сборки (с новыми .msi файлами) довольно часто, и мы используем значительные обновления, чтобы помочь установить по предыдущей установке.

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

Мы используем ServiceInstall и ServiceControl в компоненте, который содержит сервис exe файл. Есть ли способ сделать выполнение ServiceInstall условное выражение (использование условия как REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE) таким образом, сервис не удаляется при обновлении (просто остановился так, мы можем обновить файлы)?

Одно решение состояло бы в том, чтобы использовать пользовательские действия, но возможно существует лучший путь?

Спасибо!

14
задан Miron Brezuleanu 9 February 2010 в 12:09
поделиться

2 ответа

Похоже, я искал не в том месте. Решение моей проблемы - добавить NOT UPGRADINGPRODUCTCODE к стандартному действию DeleteServices .

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

ОБНОВЛЕНИЕ: условие для DeleteServices доступно из WiX в элементе InstallExecuteSequence .

11
ответ дан 1 December 2019 в 14:44
поделиться

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

0
ответ дан 1 December 2019 в 14:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: