Код обновления модуля слияния Wix

Я новичок в Wix, поэтому, возможно, этот вопрос не имеет никакого смысла, но почему нет кода обновления для модулей слияния? В настоящее время у меня есть небольшое приложение, для которого я сделал обычный MSI. Теперь я также хотел бы создать модуль слияния для этого приложения, чтобы его можно было установить вместе с другими приложениями (он будет поставляться клиентам как часть группы связанных приложений). Я хотел бы, чтобы мой модуль слияния определял, установлено ли уже мое приложение, и при необходимости обновлял его, но для модулей слияния нет кода обновления. Есть ли способ добиться этого?

Мне нужно такое поведение: предположим, вы можете установить Words, Excel и т. Д. По отдельности с их собственным MSI, но вы также можете установить весь Microsoft Office, который будет включать MSM для слов, Excel ... Конечно , если вы сначала не запускаете Excel из MSI, а затем запускаете MSI для Office, то MSM для Excel обнаружит, что он уже установлен, и обновит его, если необходимо, или ничего не сделает, если он обновлен.

Спасибо всем за вашу помощь


person Carl    schedule 28.07.2011    source источник


Ответы (1)


Обновления выполняются на уровне всего продукта. Модули слияния - это наборы связанных компонентов, которые включены в продукты. Таким образом, модуль слияния - неправильное место для указания обновлений.

Однако для описываемого вами сценария обновления не требуются: установщик Windows обновит отдельные файлы при увеличении их номеров версий. См. «Правила управления версиями файлов» в MSI SDK для получения полного списка правил управления версиями.

person Bob Arnson    schedule 28.07.2011
comment
Спасибо за это. Если в этом модуле слияния около 20 файлов, должны ли они все следовать этой схеме управления версиями файлов? Кроме того, что мне делать, если 2 из этих файлов являются COM-компонентами, которые необходимо зарегистрировать? Есть ли способ повторно зарегистрировать файл при его изменении? - person Carl; 29.07.2011
comment
Да, если файл обновляется, его номер версии должен измениться - MSI по своей сути доверяет номеру версии, поэтому, если он не изменится, MSI не будет его обновлять. То же самое относится и к регистрации COM: поместите записи реестра в тот же компонент, что и файл, увеличьте номер версии файла, и MSI обновит файл и запишет значения реестра. - person Bob Arnson; 29.07.2011
comment
Если я хорошо понимаю, модуль слияния должен жестко указать путь, по которому он устанавливает файлы, поскольку он полагается на управление версиями файлов для обновления. Если я позволю MSI решить, где установить MSM, я могу получить несколько копий файлов в разных местах системы, даже не обнаружив их? - person Carl; 29.07.2011
comment
Обычно модуль слияния должен быть создан для поддержки его установки в произвольные каталоги. Когда у вас есть такие вещи, как COM-компоненты, которые должны быть глобальными, обычно используются каталоги, такие как CommonFilesFolder. - person Bob Arnson; 29.07.2011