Проект Установки VS2008: Удаление предыдущего MSI

У меня есть проект установки VS2008, который создает setup.msi, который устанавливает приложение WinForms (C#).

Каждый раз, когда я обновляю номер версии, пользователи сначала должны удалить предыдущую версию, прежде чем они смогут установить новый. Иначе мы добираемся, страшное "Другая версия этого продукта уже установлено" сообщение.

Это - то, что я уже делаю, когда я создаю новую версию установщика:

  • Набор RemovePreviousVersions=true и DetectNewerInstalledVersion=true
  • Увеличьте AssemblyVersion (exe, это развертывается),
  • Инкрементная Версия (проекта установки)
  • Генерируйте новый ProductCode (как запрошено VS, когда Версия будет изменена),
  • Оставьте UpgradeCode без изменений

И все же это все еще отказывается удалять предыдущую версию. Так, что я пропустил? Или что я делаю неправильно?

Спасибо!

13
задан Matt Bishop 15 January 2010 в 16:31
поделиться

4 ответа

Полу отвечая на мой собственный вопрос, только на благо тех, кто заинтересован:

Во-первых, я нашел невероятно полезную статью о том, как работают обновления MSI.

Во-вторых, я нашел , встроенный , довольно приятный редактор MSI Freeware, который показал мне, что не было ничего не так с моим файлом MSI. (Да, я мог бы использовать ORCA вместо этого, если я не против загрузки все окна SDK, чтобы получить его.)

В-третьих, и раздражающе, оригинальная проблема, кажется, исправила себя, и я больше не могу воспроизвести его Отказ Если это возвращается, и если я это снова исправить, я добавлю комментарий здесь!

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

  • Assockerversion не имеет значения, но AssellowFileversion : необходимо при увеличении, если вы хотите, чтобы новые файлы были установлены. (Это изменение в VS2008, по сравнению с VS2005. См., Например, это Обсуждение на Microsoft Группы.)
  • Тем не менее, AssemblyFiLeversion не может автоматизировать способ Assockerversion может. Установка до 1,9. * (Или что угодно) просто приведет к ошибка. Раствор из стека Переполнение на этот раз, чтобы установить Assockerversion к AUTOINCREMENT и Затем откройте AssuasageInfo.cs и удалить атрибут сборки файла В целом. Это заставит файл Версия для равных сборки версия.
19
ответ дан 1 December 2019 в 20:57
поделиться

Чтобы установить его по сравнению с предыдущей версией:

  1. Выделите проект настройки.
  2. Нажмите клавишу F4 для свойств. (Правой кнопкой мыши - это разные свойства.)
  3. Изменить версию. Скажите да к приглашению, просим изменить код продукта.

Имейте в виду, даже если вы восстановите решение, он не перестраивает проект настройки. Вам нужно восстановить проект настройки как отдельный шаг.

Во-вторых, вам не нужно каждый раз увеличивать сборку. Установите это на что-то вроде 2.1. * И это сделает это автоматически.

5
ответ дан 1 December 2019 в 20:57
поделиться

Я не на 100% знаком с проектами Setup VS 2008 (я использую Advanced Installer Сам - настоятельно рекомендую его BTW; у них даже есть версия бесплатной программы!) Но я побежал в этом раньше, и он не задокументирован очень четко.

Есть 4 части к номеру версии - как вы хорошо знаете, я уверен: major.minor.build.revision. Редакция не проверяется установщиком Windows. Если все, что вы делаете, это увеличить пересмотр, он не будет работать. Вы должны увеличить, по крайней мере, сборку значения продукта.

Надеюсь, что поможет!

4
ответ дан 1 December 2019 в 20:57
поделиться

Услуга установщика принимает решения, основанные на содержании стола обновления, так что именно здесь я бы выглядел. У таблицы есть запись для вашего кода обновления, выполняет ли версию продукта в текущей установленной версии в диапазоне версий, указанных для обновлений, выполняет атрибуты OK (например, является атрибутом MSIDBUPGRADEATTRIBUTESONLYDETECT атрибут не набор), и так далее.

MSDN описывает все это здесь - http://msdn.microsoft.com/en-us/library/aaa372379%28vs.85%29.aspx

0
ответ дан 1 December 2019 в 20:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: