Подтвердить что ты не робот

Настройка InstallShield LE для удаления предыдущих версий, созданных с помощью проектов установки Visual Studio

Используя Visual Studio 2010, я хотел бы переключиться на использование InstallShield LE вместо проекта установки Visual Studio.

В проекте установки существует опция RemovePreviousVersions, которая отлично подходит для создания установщика, который по существу будет выполнять обновление на месте при выпуске новой версии.

Теперь с InstallShield LE я обновил версию и сгенерировал новый ProductCode, но после запуска программы установки предыдущая версия все еще присутствует.

Что мне нужно сделать, чтобы проект, построенный с помощью InstallShield, мог удалить предыдущую версию, созданную с помощью проекта установки VS?

4b9b3361

Ответ 1

Вы можете попробовать следующее:

  • откройте свой старый MSI с Orca и получите его таблицу UpgradeCode из таблицы свойств
  • в проекте InstallShield LE перейдите к разделу "Общая информация" в браузере решений
  • убедитесь, что поле "Обновить код" установлено на ваш старый файл обновления MSI

Вы также должны убедиться, что свойство ALLUSERS имеет одинаковое значение для обеих версий (это тот же подход). Подробнее об обновлениях вы можете прочитать здесь: http://msdn.microsoft.com/en-us/library/aa369786(VS.85).aspx

Ответ 2

Это сбило меня с ума, когда я впервые начал работать с проектом в Visual 2012. Я продолжал получать дубликаты в программах добавления/удаления, а старая версия не обновлялась. Вот что я нашел, что мне нужно было сделать.

В разделе "Пути обновления" создайте новый путь. Оставьте минимальную версию пустой (если она вам не нужна), включите минимальную версию yes, версию Max следует установить в версию, которую вы устанавливаете сейчас. Включите максимальную версию в yes.

Каждый раз, когда вы устанавливаете обновление, продвигайте версию продукта в разделе "Общая информация". Нажмите на новый код продукта в разделе "Общая информация" НЕ ИЗМЕНЯЙТЕ код обновления

Вернитесь к пути обновления и установите версию Max для той же версии, которую вы развертываете сейчас. Это было ключом к тому, чтобы это работало для меня.

Этот процесс удаляет предыдущую версию и устанавливает последнюю версию. Нет дубликатов в программах добавления/удаления.

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

Ответ 3

user2321103 ответ отличный, создание новой записи обновления в Upgrade Paths является ключевым моментом. К сожалению, этот параметр скрыт, поскольку он необходим для того, чтобы обеспечить то, что большинство людей, естественно, ожидало бы обычного поведения по умолчанию для программы установки.

Причиной этого нового ответа является то, что я обнаружил, что я могу установить максимальную версию в версии Upgrade Entry на большее число, а не на текущую версию. Это означает, что я не буду забывать обновлять это для каждой новой версии. Моя текущая версия 2.1.8, поэтому я устанавливаю Max Version равным 2.1.9999. В маловероятном случае, когда мне может понадобиться другое поведение в некоторых будущих версиях, я могу довести свою версию до 2.2.x

Проект Microsoft Setup автоматически обновит Код продукта, когда вы измените номер версии, но Installshield LE не будет, поэтому вам нужно будет помнить об этом каждый раз.

Как утверждают другие ответы, важно, чтобы в Upgrade Entry использовался код Upgrade из предыдущих установленных версий. Я не пробовал это, но предположительно, если по какой-то причине у вас более одной предыдущей версии с разными кодами обновления, вы можете создать отдельную запись обновления для каждого.

Я не понимаю, почему вы не можете просто установить версию Include Min и включить максимальную версию в No, но это, похоже, не работает. Я не пробовал каждую комбинацию этих разных параметров, но, как указано в другом ответе, следующие настройки, похоже, делают трюк:

  • Минимальная версия: blank
  • Включить минимальную версию: Да
  • Максимальная версия: >= текущая версия
  • Включить максимальную версию: Да

Также кажется важным не изменять критерий поиска Lang для исключения. Я также установил "Игнорировать", чтобы удалить отказ "Да". У меня есть Migrate Feature States, установленный в No, но я не думаю, что это относится к изданию LE в любом случае.