Установщик Windows - это технология развертывания , его задача - установить указанные файлы и параметры реестра и сохранить их в указанных местах установки и убедиться, что они являются правильные версии - самовосстановление или отказоустойчивость являются механизмом для достижения этой цели. Его работа конфликтует с необходимостью разработчика обмениваться файлами на лету для отладки, разработки и тестирования.
Как разработчик, вы можете быть заинтересованы в развертывании MSI, а затем удалении или замене файлов на лету для отладки. В этих случаях MSI может создавать неудобства, поскольку он никогда не прекращает свою работу и переустанавливает правильные файлы. Это называется " Самовосстановление " и может быть очень раздражающим! : -.)
Есть много способов обойти это, MSI довольно сложный. Поскольку «самовосстановление» обычно вызывается из « объявленного ярлыка », самый простой способ избежать этой функции MSI - запускать файл EXE непосредственно из файловой системы, а не через ярлык. Это обходит механизм самовосстановления MSI для всех, кроме самых сложных EXE-файлов. Вы также можете вручную создать нерекламированный ярлык на рабочем столе, который не приведет к самовосстановлению.
Для записи самовосстановление инициируется « точками входа самовосстановления » для проверки пути ключа. Они включают в себя рекламируемые ярлыки, ассоциации файлов, данные реестра COM среди прочего.
Существует гораздо больше самовосстановления или упругости , которое является его официальным названием, пожалуйста, проверьте эту всеобъемлющую статью о проблемах самовосстановления , чтобы найти способы решения вашей конкретной проблемы. Это длинная статья, но ее стоит прочитать, если у вас возникли проблемы с самовосстановлением.
ОБНОВЛЕНИЕ, октябрь 2018 :
Подробное описание самовосстановления : больше, чем кто-либо хочет знать о самовосстановлении:
- Самовосстановление - объяснил
- Самовосстановление - поиск реальных решений
- Самовосстановление - как избежать этого в вашей собственной упаковке
Аналог: Visual Studio 2015 msi build запускает другую установку