Установщик Windows будет активно предотвращать понижение бинарных файлов до такой степени, что это трудно сделать даже при использовании «чистой силы», как вы делаете с REINSTALLMODE = amus. Это часть стратегии Microsoft по предотвращению «ада DLL», существовавшего в первые дни Windows. В те дни можно было перезаписать системные DLL-файлы более старыми версиями и, следовательно, сломать вещи влево, вправо и везде. Установщик Windows имеет несколько уровней защиты для предотвращения понижения версии двоичных файлов.
В тех случаях, когда вам нужно иметь возможность понизить версию файлов, как вы упомянули, единственный подход, который действительно работает, - это использовать крупные обновления. Серьезные обновления на самом деле не столько обновления, сколько удаление и повторная установка данного продукта. Это позволяет избежать многих сложностей, возникающих при правильной работе незначительных обновлений MSI.
Есть сложности даже с серьезными обновлениями в отношении понижения. Вы должны упорядочить удаление существующего продукта на раннем этапе InstallExecuteSequence, чтобы старый продукт был удален из системы до того, как установщик Windows проанализирует систему слишком много во время расчета стоимости файла. Эта операция сравнивает состояние системы с файлами в MSI и определяет, какие файлы необходимо (пере) установить. Если логика версии указывает, что файл в MSI является более ранней версией, конечный результат может заключаться в том, что файл на диске удаляется, а старый файл вообще не устанавливается. Может потребоваться удалить файл с диска заранее с помощью специального действия, чтобы сделать понижение надежности надежным, или использовать папку установки, в которой абсолютный путь к целевой папке назначения отличается в разных выпусках. Это обманет MSI "стоимость файла", чтобы не видеть файл, установленный в том же месте:
% ProgramFiles% \ Моя компания \ Мой продукт \ 1
% ProgramFiles% \ Моя компания \ Мой продукт \ 1.1
Мне не нравится эта папка установки "движущаяся цель" - по моему мнению, MSI-файл не должен устанавливаться, но это может решить вашу проблему.