У меня есть проект установки VS2008, который создает setup.msi, который устанавливает приложение WinForms (C#).
Каждый раз, когда я обновляю номер версии, пользователи сначала должны удалить предыдущую версию, прежде чем они смогут установить новый. Иначе мы добираемся, страшное "Другая версия этого продукта уже установлено" сообщение.
Это - то, что я уже делаю, когда я создаю новую версию установщика:
И все же это все еще отказывается удалять предыдущую версию. Так, что я пропустил? Или что я делаю неправильно?
Спасибо!
Полу отвечая на мой собственный вопрос, только на благо тех, кто заинтересован:
Во-первых, я нашел невероятно полезную статью о том, как работают обновления MSI.
Во-вторых, я нашел , встроенный , довольно приятный редактор MSI Freeware, который показал мне, что не было ничего не так с моим файлом MSI. (Да, я мог бы использовать ORCA вместо этого, если я не против загрузки все окна SDK, чтобы получить его.)
В-третьих, и раздражающе, оригинальная проблема, кажется, исправила себя, и я больше не могу воспроизвести его Отказ Если это возвращается, и если я это снова исправить, я добавлю комментарий здесь!
В любом случае, все это подняло новое - возможно, хуже - проблема: MSI сейчас заявлено , чтобы обновить приложение, но на самом деле не было ничего! Решение этого заключается в следующем:
Чтобы установить его по сравнению с предыдущей версией:
Имейте в виду, даже если вы восстановите решение, он не перестраивает проект настройки. Вам нужно восстановить проект настройки как отдельный шаг.
Во-вторых, вам не нужно каждый раз увеличивать сборку. Установите это на что-то вроде 2.1. * И это сделает это автоматически.
Я не на 100% знаком с проектами Setup VS 2008 (я использую Advanced Installer Сам - настоятельно рекомендую его BTW; у них даже есть версия бесплатной программы!) Но я побежал в этом раньше, и он не задокументирован очень четко.
Есть 4 части к номеру версии - как вы хорошо знаете, я уверен: major.minor.build.revision. Редакция не проверяется установщиком Windows. Если все, что вы делаете, это увеличить пересмотр, он не будет работать. Вы должны увеличить, по крайней мере, сборку значения продукта.
Надеюсь, что поможет!
Услуга установщика принимает решения, основанные на содержании стола обновления, так что именно здесь я бы выглядел. У таблицы есть запись для вашего кода обновления, выполняет ли версию продукта в текущей установленной версии в диапазоне версий, указанных для обновлений, выполняет атрибуты OK (например, является атрибутом MSIDBUPGRADEATTRIBUTESONLYDETECT
атрибут не набор), и так далее.
MSDN описывает все это здесь - http://msdn.microsoft.com/en-us/library/aaa372379%28vs.85%29.aspx