Вы можете использовать свойство UPGRADINGPRODUCTCODE, чтобы проверить, выполняете ли вы обновление. Мы используем это, чтобы определить, следует ли нам запускать наше пользовательское действие «очистить»:
<Custom Action="" After="CleanUpFiles">
<![CDATA[REMOVE="ALL" AND NOT UPGRADINGPRODUCTCODE]]>
</Custom>
Я согласен с Робом в том, что конфиг - это пользовательские данные, хранящиеся в их папках AppData и никогда не создаваемые MSI. Вместо этого устанавливается значение по умолчанию (которое мы сохраняем в качестве конфигурации по умолчанию в файлах программ) и копируется самим приложением. Но мы не хотим оставлять эти вещи беспорядочными на компьютере пользователя, если они хотят удалить наш продукт, поэтому мы создали CleanUpFiles, который ищет в HD все оставшиеся отходы.