Я знаю, что это более старая тема, но я столкнулся с аналогичной проблемой, которая не была охвачена решениями. В моем случае у меня была DLL, которая на самом деле имела меньшую версию, чем ее предшественница. Эта DLL никогда не появится при обновлении. Бег
msiexec /i myproduct.msi /l*vx install2.log
и проверка журнала показала, что файл так и не был установлен. Он просто не появился в журнале как один из установленных файлов. MSI определенно содержал файл, лучшее доказательство того, что Ремонт поместит файл. Кроме того, взрыв MSI с различными инструментами показал наличие файла. Прямая установка на чистую машину всегда будет работать.
Это не помогло:
msiexec /i myproduct.msi REINSTALL=ALL REINSTALLMODE=amus /l*vx install3.log
Я создаю MSI с помощью Wix, и я использую этот скрипт в течение многих лет. Совсем недавно мы установили скрипт для полного удаления старого каталога в нашей версии 5.3. Это работало до 5,2 -> 5,3 и 5,3 -> 5,4 обновления. Но с версией 5.5 все библиотеки DLL были перестроены с новыми версиями библиотек DLL. Проекты DLL были размещены в GitHub. Сценарий сборки для этой конкретной библиотеки DLL был задан как версия сборки «10 .0.0. {Git rev-list --count HEAD}». Проект был перенесен, в результате чего количество HEAD изменилось с 444 до 30.
Включает wixscript,
define ProductGuid = "{nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn}"
, поэтому мы обновляем руководство продукта (а не руководство по обновлению продукта) для каждого выпуска.
Исправление было в том, чтобы немного изменить сценарий сборки этого dll, чтобы установить версию сборки на «10 .0. 1 . {Git rev-list --count HEAD}», предположительно обрабатываясь как версия с более высоким номером.
Почему это сработало, я не могу объяснить.