Ответ 1
Существует много способов - ни один из них не идеален.
1: вы можете использовать сопутствующий файл, чтобы принудительно обновить файл. При условии, что указанный файл сопутствующих файлов всегда обновляется, это может быть путь. По сути, это означает, что вы связываете не-версированный файл с логикой обновления версии своего сопутствующего файла (файлы обновляются вместе). Я никогда не использовал это в WIX, но мне кажется, что это просто, как добавление атрибута CompanionFile к элементу File и указывать на идентификатор файла, который вы хотите использовать "версия". Внутри файла MSI он будет выглядеть примерно так:
2: вы можете использовать настраиваемое действие для удаления файла до загрузки файла (или, еще лучше, переименовать его в формат резервной копии). Проблема в том, что если сбой установки, файл будет отсутствовать. Если вы переименуете файл, а не удаляете, вы можете вернуть его обратно, если установка завершится неудачно с помощью специального действия отката. Иногда я использую таблицу RemoveFile для удаления файлов при установке, но в зависимости от последовательности, указанной в InstallExecuteSequence, это может не работать (удаление должно происходить до того, как msi выполнит обработку файла).
3: Тогда подход кувалды: установите REINSTALLMODE = amus, чтобы принудительно перезаписать все файлы независимо от версии. Я не должен упоминать об этом, так как это ужасно опасно (вы можете закончить переписывание системных файлов, или в новых версиях Windows запускать неприятную ошибку времени выполнения, поскольку файлы защищены). Используйте его только для тестирования dev, и не думайте, что это быстрое решение. Это вызывает больше проблем, чем решает.
В качестве варианта приемлемым подходом может быть установка REINSTALLMODE в emus (заменить старые и те же файлы версий). Это может помочь, если вы не хотите увеличивать номера версий, но продолжайте перестраивать свои двоичные файлы - как это происходит во многих .NET. Я предполагаю, что это приведет к появлению целого ряда новых проблем - наиболее значимых двоичных, но идентичных файлов версий в дикой природе, если вы используете его для публичных выпусков - запах развертывания если когда-либо был. Однако, как подход QA/DEV, он может работать. Но серьезно, зачем беспокоиться? Просто автоматически увеличивайте версию сборки двоичных файлов, и проблема решается надежно.