Почему установщик MSI перенастраивается, если я удаляю файл?

Я создал пакет установщика MSI в Visual Studio 2008. Проблема в том, что после установки, если я удалю ЛЮБОЙ из установленных файлов. Это не мое намеренное поведение для моего пакета установщика. Мои параметры установки файла:

PackageAs vsdpaDefault Постоянный ложь ReadOnly False Регистрация vsdrfDoNotRegister Система False Транзитивная ложь Vital False

Если это тривиально, простите меня. Не могу поверить, что я не смог заставить Google отказаться от ответа.:)

Ответ 1

Установщик Windows - это технология развертывания, его задача - установить указанные файлы и параметры реестра и сохранить их в указанных местах установки и убедиться, что они являются правильными версиями - самовосстановление или отказоустойчивость механизм для этого. Его работа конфликтует с разработчиком, который должен обмениваться файлами на лету для отладки, разработки и тестирования.

Как разработчик, вы можете быть заинтересованы в развертывании MSI, а затем удалении или замене файлов на лету для отладки. В этих случаях MSI может создавать неудобства, поскольку он никогда не прекращает свою работу и переустанавливает правильные файлы. Это называется "самовосстановление" и может быть очень раздражающим! :-).

Есть много способов обойти это, MSI довольно сложный. Поскольку "самовосстановление" обычно вызывается из "объявленного ярлыка", самый простой способ избежать этой функции MSI - запускать файл EXE непосредственно из файловой системы, а не через ярлык. Это обходит механизм самовосстановления MSI для всех, кроме самых сложных EXE файлов. Вы также можете вручную создать нерекламированный ярлык на рабочем столе, который не приведет к самовосстановлению.

Для записи самовосстановление запускается "пунктами самовосстановления" для проверки пути ключа. Они включают в себя рекламируемые ярлыки, ассоциации файлов, данные реестра COM среди прочего.

Самовосстановление или отказоустойчивость, что является его официальным названием, можно найти в этой всеобъемлющей статье о проблемах самовосстановления, чтобы найти способы решить вашу конкретную проблему. Это длинная статья, но ее стоит прочитать, если у вас проблемы с самовосстановлением.


UPDATE, October 2018:

Самовосстановление в деталях: больше, чем кто-либо хочет знать о самовосстановлении:

  1. Самовосстановление - объяснил
  2. Самовосстановление - поиск реальных решений
  3. Самовосстановление - как этого избежать в собственной упаковке

Ссылки:

Ответ 3

Я знаю, что опоздал на вечеринку по этому вопросу, но обнаружил, что добавление 'NeverOverwrite = "yes"' к определению компонентов файла (ов), которые должны быть изменены после установки, останавливает самовосстановление с отмена моих изменений.

Это почти решило мою проблему самовосстановления. Я добавил это ко всем файлам конфигурации и командным файлам в MSI.