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