Приложение и бинарные файлы не обновляются при применении патча, когда пытается добавить раздел реестра
Я пытаюсь создать патч (MSP-файл) с помощью wix, где я копирую некоторые файлы в путь установки приложения (программные файлы), а также пытаюсь добавить раздел реестра.
При установке (используя msi) все работает нормально, как и положено, двоичные файлы обновляются. Но когда я пытаюсь применить патч, он не работает, значит, двоичные файлы не обновляются.
Однако я заметил, что когда я пытаюсь применить патч еще раз, двоичные файлы, похоже, обновляются.
Похоже, здесь я добавляю компонент, предоставляя Guuid.
Вопрос: почему он работает для новой установки, а не при использовании патча? Можно ли добавить компонент с новым guuid используя patch (msp)?
1 ответ
Нужна более точная информация:
Msgstr "При установке (используя msi) все работает нормально, как и ожидалось, двоичные файлы обновлены"
Это свежая установка или какое-то обновление? Если это новая установка, и ваша установка заменяет более старые двоичные файлы, поскольку они имеют более низкую версию, то этого следовало ожидать. Вы просто устанавливаете поверх существующих файлов, хотя, если они были ранее установлены MSI (вашим или кем-либо другим), вы, возможно, обновляете их неправильно.
Можно добавить компонент с патчем, но правила могут быть сложными. Целью патча в основном является исправление существующих компонентов, а не их добавление. Кроме того, если вы удалите компонент как часть исправления, исправление не будет работать должным образом. Основная проблема, о которой вам нужно знать, - это правила компонентов, а не их нарушение в патче или обновлении.
http://robmensching.com/blog/posts/2003/10/18/component-rules-101/
Чтобы добавить компоненты или внести какие-либо изменения (кроме исправления существующих файлов), наиболее безопасным в вашей ситуации является серьезное обновление.
Чтобы выяснить, нарушили ли вы правила компонентов во время обновления (например, патч), возьмите подробный журнал и найдите сообщения SELMGR, относящиеся к удалению компонентов, которые не поддерживаются. Также установите MSIENFORCEUPGRADECOMPONENTRULES =1, чтобы обновление не выполнялось, если правила были нарушены.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa370093(v=vs.85).aspx
http://robmensching.com/blog/posts/2007/1/4/doing-a-small-update-or-minor-upgrade-in-msi-use/