VS2005 Setup Project.
Есть приложение, которое периодически обновляется.
Установки:
DetectNewerInstalledVersion = true
InstallAllUsers = true
ProductCode = новый
RemovePreviousVersions = true
UpgradeCode = постоянный
Version = новый (изменяется третья цифра)
Все это дело прекрасно работало. Т.е. запускаешь такой апдейт, он сносит старую версию втихаря и ставит новую. Все отлично. Причем можно легко удалять собственно пакет обновления перед первым запуском обновленного приложения – никаких ошибок не будет.
Проблема. Изменился состав dll'ек в дистрибутиве. Там и сишные с тем же именем и дотнетовские с нэйтив кодом. Казалось бы какая разница? Оказывается есть.
Теперь если программу обновить, а пакет обновления удалить, то при первом запуске приложения выдается ошибка:
Нужный файл находится на сетевом ресурсе, который сейчас недоступен.
Укажите путь к папке, содержащей пакет установки.
Захожу в директорию установки и вижу, что собственно экзешника, на который ссылается ярлык, нет!
Причем если запустить апдейт «с нуля», т.е. если на машине нет установленного приложения, то все отлично!
Не подскажите куда думать?
Надо проверить, что версии сборок новых библиотек (того же экзешника) выше предыдущих.
Иначе инсталлятор их не закопирует и при запуске будет требовать дистрибутив.