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

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

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

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

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

Ответы [ 4 ]

41 голосов
/ 25 апреля 2013

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

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

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

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

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

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

8 голосов
/ 23 июня 2011

Вы можете попробовать это:

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

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

4 голосов
/ 16 декабря 2014

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

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

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

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

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

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

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

0 голосов
/ 28 марта 2018

Если я смогу выбросить еще один ответ в шапку, я смог создать путь обновления, который не требует установки / обновления определенного кода обновления, минимальной или максимальной версии на основе общего пути обновления ISPreventDowngrade.В соответствии с предостережением в описании Max Version, You must specify a value for at least one of the version settings: Min Version, Max Version, or both. Поэтому я установил для версии Max общий заполнитель.Это сделано, я не обязан устанавливать максимальную версию.Поэтому моя конфигурация выглядит следующим образом:

  • Код обновления: {00000000-0000-0000-0000-000000000000} (универсальный заполнитель, который будет заменен на код обновления текущего установщика)
  • Мин. Версия: пусто
  • Включить минимальную версию: Нет
  • Макс. Версия: ***ALL_VERSIONS*** (заполнитель версии)
  • Включить максимальную версию: Да

Все остальные поля я оставил без изменений.См. http://helpnet.flexerasoftware.com/installshield23helplib/helplibrary/PreventingDowngrades.htm для получения дополнительной информации, но будьте осторожны с опечатками.Оба заполнителя выше опечатки;Я получил их по данным, использованным в пути обновления ISPreventDowngrade.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...